随笔分类 - Qt
Qt/Qtopia C++ GUI
Qt 提取文件(exe, dll等)中的图标icon
摘要:
Qt提取不同文件格式(exe, dll等)中的图标icon
阅读全文
Qt提取不同文件格式(exe, dll等)中的图标icon
阅读全文
Qt中QTableWidget用法总结
摘要:
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。这主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。
阅读全文
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。这主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。
阅读全文
Qt中translate、tr关系 与中文问题
摘要:
题外话:何时使用 tr ?
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:
•(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr
•(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:◦(2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)
◦(2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包)
阅读全文
题外话:何时使用 tr ?
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:
•(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr
•(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:◦(2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)
◦(2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包)
阅读全文
Qt文件处理
摘要:
Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFile,获取文件信息可以使用QFileInfo ,处理目录可以使用QDir.监视文件和目录变化可以使用QFileSystemWatcher. 读写文本文件 QFile类提供了读写文件的接口,QFile类可以读写文本文件,二进制文件和Qt资源文件,也可以使用更方便的QTextStream,QDataStream类读取文本文件和二进制文件,要打开一个文件,可以在构造函数中指定文件名,也可以在任何时候使用setFileName()函数设置文件名,打开文件使用open函数,关闭文件使用close函数。QFile中可以使用QIODevice中继承的readLine()函数读写文本文件的一行
阅读全文
Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFile,获取文件信息可以使用QFileInfo ,处理目录可以使用QDir.监视文件和目录变化可以使用QFileSystemWatcher. 读写文本文件 QFile类提供了读写文件的接口,QFile类可以读写文本文件,二进制文件和Qt资源文件,也可以使用更方便的QTextStream,QDataStream类读取文本文件和二进制文件,要打开一个文件,可以在构造函数中指定文件名,也可以在任何时候使用setFileName()函数设置文件名,打开文件使用open函数,关闭文件使用close函数。QFile中可以使用QIODevice中继承的readLine()函数读写文本文件的一行
阅读全文
Qt中QString,char,int,QByteArray之间到转换
摘要:
各种数据类型的相互转换 char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = ch1;//不报错,但有警告 ch1 = (char *)ch2;
char 转换为 QString 其实方法有很多中,我用的是: char a='b'; QString str; str=QString(a);
QString 转换为 char 方法也用很多中 QString str="abc"; char *ch; ch = str.toLatin1.data();
QByteArray 转换为 char * char *ch;//不要定义成ch[n]; QByteArray byte; ch = byte.data();
char * 转换为 QByteArray char *ch; QBy
阅读全文
各种数据类型的相互转换 char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = ch1;//不报错,但有警告 ch1 = (char *)ch2;
char 转换为 QString 其实方法有很多中,我用的是: char a='b'; QString str; str=QString(a);
QString 转换为 char 方法也用很多中 QString str="abc"; char *ch; ch = str.toLatin1.data();
QByteArray 转换为 char * char *ch;//不要定义成ch[n]; QByteArray byte; ch = byte.data();
char * 转换为 QByteArray char *ch; QBy
阅读全文
Qt的QFile类详解
摘要:
QFile类是操作文件的输入输出设备类。QFile是一个用来读写二进制文件与文本文件的输入输出设备。QFile可以被自己或更方便的类 DataStream或QTextStream使用。文件的名字通常通过构造传递,但可以通过setName()来修改。你可以使用exists()来检查文件是否存在,并且通过remove()来移除一个文件。文件通过open()被打开,通过close()来关闭,通过flush()来更新。数据通常使。QDataStream或QTextStream来被读出写入,但你可以通过readBlock()和readLine()读出,通过 writeBlock()写入。
阅读全文
QFile类是操作文件的输入输出设备类。QFile是一个用来读写二进制文件与文本文件的输入输出设备。QFile可以被自己或更方便的类 DataStream或QTextStream使用。文件的名字通常通过构造传递,但可以通过setName()来修改。你可以使用exists()来检查文件是否存在,并且通过remove()来移除一个文件。文件通过open()被打开,通过close()来关闭,通过flush()来更新。数据通常使。QDataStream或QTextStream来被读出写入,但你可以通过readBlock()和readLine()读出,通过 writeBlock()写入。
阅读全文
继承QTreeWidgetItem发生error: 'staticMetaObject' is not a member of 'QTreeWidgetItem' 错误
摘要:
#ifndefQQUSERITEM_H就发生下列错误
#defineQQUSERITEM_H#includeclassQQUserItem:publicQTreeWidgetItem{Q_OBJECTpublic:explicitQQUserItem(QQUserItem*parent=0);signals:publicslots:};#endif//QQUSERITEM_H
debug\moc_QQUserItem.cpp:41:8: error: 'staticMetaObject' is not a member of 'QTreeWidgetItem'
..\..\Qt\4.6.3\include/QtCore/http://www.cnblogs.com/src/corelib/kernel/qobject.h: In member function
阅读全文
#ifndefQQUSERITEM_H就发生下列错误
#defineQQUSERITEM_H#includeclassQQUserItem:publicQTreeWidgetItem{Q_OBJECTpublic:explicitQQUserItem(QQUserItem*parent=0);signals:publicslots:};#endif//QQUSERITEM_H
debug\moc_QQUserItem.cpp:41:8: error: 'staticMetaObject' is not a member of 'QTreeWidgetItem'
..\..\Qt\4.6.3\include/QtCore/http://www.cnblogs.com/src/corelib/kernel/qobject.h: In member function
阅读全文
QT进度条
摘要:
在QT中可以用QProgressBar或着QProgressDialog来实现进度条。
QProgressBar的使用
首先在designer中拖一个按钮和进度条部件,按下面初始化
ui-progressBar-setRange(0,50000-1);
ui-progressBar-setValue(0);
阅读全文
在QT中可以用QProgressBar或着QProgressDialog来实现进度条。
QProgressBar的使用
首先在designer中拖一个按钮和进度条部件,按下面初始化
ui-progressBar-setRange(0,50000-1);
ui-progressBar-setValue(0);
阅读全文
Qt 将进度条嵌入进table widget 控件
摘要:
table widget是qt4才引入的一个控件。大体的做法就是使用QItemDelegate类,然后在 createEditor接口返回想要使用的QWidget。
还有种简单的方法是使用QTableWidget的setCellWidget的接口直接将QWidget设置进去。
阅读全文
table widget是qt4才引入的一个控件。大体的做法就是使用QItemDelegate类,然后在 createEditor接口返回想要使用的QWidget。
还有种简单的方法是使用QTableWidget的setCellWidget的接口直接将QWidget设置进去。
阅读全文
QT:给Widget设置背景图片
摘要:
先上代码,这里作说明。
1)将该段代码放在需要设置背景图片的构造函数中 2)需要包含头文件 #include #include #include 3)逻辑: 首先构造一个QPixmap对象,可以认为是一个位图。 然后将该Widget的调色板palette取出来放在bgPalette里面 修改调色板,用Brush将我们刚才创建的图片刷到调色板上去 最后重置Widget的调色板
4)注意: 如果背景图片是png等含有透明部分的图片,还要用setMask()函数将背景的掩码设置成和图片一样的,方可显示透明色。
阅读全文
先上代码,这里作说明。
1)将该段代码放在需要设置背景图片的构造函数中 2)需要包含头文件 #include #include #include 3)逻辑: 首先构造一个QPixmap对象,可以认为是一个位图。 然后将该Widget的调色板palette取出来放在bgPalette里面 修改调色板,用Brush将我们刚才创建的图片刷到调色板上去 最后重置Widget的调色板
4)注意: 如果背景图片是png等含有透明部分的图片,还要用setMask()函数将背景的掩码设置成和图片一样的,方可显示透明色。
阅读全文
Qt中如何 编写插件 加载插件 卸载插件
摘要:
Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容。Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoader来加载和卸载这些库。由于在开发项目的过程中,要开发一套插件系统,就使用了Qt的这套类库。
一 编写插件
编写一个Qt的插件需要以下步骤
1.声明一个插件类,
2.定义一个类,实现这个插件类定义的接口,定义的这个类必须从QObject集成下来。
3.使用Q_INTERFACESQ_INTERFACES()告知Qt的元系统这个接口的存在
阅读全文
Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容。Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoader来加载和卸载这些库。由于在开发项目的过程中,要开发一套插件系统,就使用了Qt的这套类库。
一 编写插件
编写一个Qt的插件需要以下步骤
1.声明一个插件类,
2.定义一个类,实现这个插件类定义的接口,定义的这个类必须从QObject集成下来。
3.使用Q_INTERFACESQ_INTERFACES()告知Qt的元系统这个接口的存在
阅读全文
tableWidget单元格的大小调整
摘要:
// 单列宽度
ui.tableWidget.setColumnWidth(column, width);
// 表格适应内容
ui.tableWidget.resizeColumnsToContents();
// 表格适应内容 指定列
ui.tableWidget.resizeColumnToContents(column);
阅读全文
// 单列宽度
ui.tableWidget.setColumnWidth(column, width);
// 表格适应内容
ui.tableWidget.resizeColumnsToContents();
// 表格适应内容 指定列
ui.tableWidget.resizeColumnToContents(column);
阅读全文
QT中添加Q_OBJECT出现的问题
摘要:
我在用class My_Node : public QGraphicsItem,public QObject来生成自己的类时,想使用信号和槽机制,但这是dys_node.h中没有Q_OBJECT,不能使用信号槽。我将Q_OBJECT加上之后,出现几个不知道是什么的错误。然后我将工程目录下的Makefile删除,然后重新编译、链接文件,刚才的错误消失了,但出现如下三个错误:
error: 'staticMetaObject' is not a member of 'QGraphicsItem'
error: 'qt_metacast' is not a member of 'QGraphicsItem'
error: 'qt_metacall' is not a member of 'QGraphicsItem'
阅读全文
我在用class My_Node : public QGraphicsItem,public QObject来生成自己的类时,想使用信号和槽机制,但这是dys_node.h中没有Q_OBJECT,不能使用信号槽。我将Q_OBJECT加上之后,出现几个不知道是什么的错误。然后我将工程目录下的Makefile删除,然后重新编译、链接文件,刚才的错误消失了,但出现如下三个错误:
error: 'staticMetaObject' is not a member of 'QGraphicsItem'
error: 'qt_metacast' is not a member of 'QGraphicsItem'
error: 'qt_metacall' is not a member of 'QGraphicsItem'
阅读全文
QString和char字符串数组之间的转换
摘要:
做串口通信时,碰到这样的问题,在Qt的界面中,我用QLineEdit对象负责显示发送和接收的文本,对其中的数据进行读取和显示使用的数据类型都是QString;但是,在对串口设备进行读写时,数据使用的形式都是char型指针(不知道是不是我理解的不透彻),所以就要解决QString和char型数组之间的转换。
查阅了一些资料,并经过自己的验证,找到了下面的解决办法:
阅读全文
做串口通信时,碰到这样的问题,在Qt的界面中,我用QLineEdit对象负责显示发送和接收的文本,对其中的数据进行读取和显示使用的数据类型都是QString;但是,在对串口设备进行读写时,数据使用的形式都是char型指针(不知道是不是我理解的不透彻),所以就要解决QString和char型数组之间的转换。
查阅了一些资料,并经过自己的验证,找到了下面的解决办法:
阅读全文
QT 的信号与槽机制介绍(一)
摘要:
信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C++ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C++ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。 信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生 core du
阅读全文
信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C++ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C++ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。 信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生 core du
阅读全文
QT 的信号与槽机制介绍(二)
摘要:
信号与槽机制是比较灵活的,但有些局限性我们必须了解,这样在实际的使用过程中做到有的放矢,避免产生一些错误。下面就介绍一下这方面的情况。
1 .信号与槽的效率是非常高的,但是同真正的回调函数比较起来,由于增加了灵活性,因此在速度上还是有所损失,当然这种损失相对来说是比较小的,通过在一台 i586-133 的机器上测试是 10 微秒(运行 Linux),可见这种机制所提供的简洁性、灵活性还是值得的。但如果我们要追求高效率的话,比如在实时系统中就要尽可能的少用这种机制。
2 .信号与槽机制与普通函数的调用一样,如果使用不当的话,在程序执行时也有可能产生死循环。因此,在定义槽函数时一定要注意避免间接形成无限循环,即在槽中再次发射所接收到的同样信号。例如 , 在前面给出的例子中如果在 mySlot() 槽函数中加上语句 emit mySignal() 即可形成死循环。
3 .如果一个信号与多个槽相联系的
阅读全文
信号与槽机制是比较灵活的,但有些局限性我们必须了解,这样在实际的使用过程中做到有的放矢,避免产生一些错误。下面就介绍一下这方面的情况。
1 .信号与槽的效率是非常高的,但是同真正的回调函数比较起来,由于增加了灵活性,因此在速度上还是有所损失,当然这种损失相对来说是比较小的,通过在一台 i586-133 的机器上测试是 10 微秒(运行 Linux),可见这种机制所提供的简洁性、灵活性还是值得的。但如果我们要追求高效率的话,比如在实时系统中就要尽可能的少用这种机制。
2 .信号与槽机制与普通函数的调用一样,如果使用不当的话,在程序执行时也有可能产生死循环。因此,在定义槽函数时一定要注意避免间接形成无限循环,即在槽中再次发射所接收到的同样信号。例如 , 在前面给出的例子中如果在 mySlot() 槽函数中加上语句 emit mySignal() 即可形成死循环。
3 .如果一个信号与多个槽相联系的
阅读全文
QT自定义窗口插件在QT Creator的应用
摘要:
根据《C++ GUI Programming with Qt 4,Second Edition》中第5章的“在Qt设计师中集成自定义窗口部件”小节,使用插件法生成的窗口部件利用QT Creator编译后,在QT Creator中的设计师是找不到的,但是在打开/qt/bin中的Qt designer是可以找到该插件的。
如果在Qt designer插入该插件,然后在QT Creator中编译是通不过的。
照成这种问题的原因是QT Creator和Qt designer的窗口部件插件是存在不同路径的.Qt designer是在/qt/plugins/designer中,而QT Creator是在/bin/designer中,解决办法只需将/qt/plugins/designer中的全部内容复制到setuproot
阅读全文
根据《C++ GUI Programming with Qt 4,Second Edition》中第5章的“在Qt设计师中集成自定义窗口部件”小节,使用插件法生成的窗口部件利用QT Creator编译后,在QT Creator中的设计师是找不到的,但是在打开/qt/bin中的Qt designer是可以找到该插件的。
如果在Qt designer插入该插件,然后在QT Creator中编译是通不过的。
照成这种问题的原因是QT Creator和Qt designer的窗口部件插件是存在不同路径的.Qt designer是在/qt/plugins/designer中,而QT Creator是在/bin/designer中,解决办法只需将/qt/plugins/designer中的全部内容复制到setuproot
阅读全文
如何让插件加载到Qt Designer
摘要:
本文介绍的是如何让插件加载到Qt Designer,插件是一种遵循一定规范的应用程序接口编写出来的程序,对于Qt Designer不多做介绍了,先看内容吧。本文介绍的是如何使自定义的插件加载到Qt Designer,对于插件,插件是一种遵循一定规范的应用程序接口编写出来的程序。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。第一步,需要创建自定义窗口部件。可以对一个已经存在的窗口部件进行子类化也可以直接对Qwidget 进行子类化,就可以创建自定义的窗口部件。我是采用子类化Qwidget的方法创建的窗口部件。
阅读全文
本文介绍的是如何让插件加载到Qt Designer,插件是一种遵循一定规范的应用程序接口编写出来的程序,对于Qt Designer不多做介绍了,先看内容吧。本文介绍的是如何使自定义的插件加载到Qt Designer,对于插件,插件是一种遵循一定规范的应用程序接口编写出来的程序。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。第一步,需要创建自定义窗口部件。可以对一个已经存在的窗口部件进行子类化也可以直接对Qwidget 进行子类化,就可以创建自定义的窗口部件。我是采用子类化Qwidget的方法创建的窗口部件。
阅读全文
Qt4.7做Led 测试,Qt界面运行正常,LED无反应
摘要:
大家好,在学习Qt4.7的移植时按照TQ6410_QT4.7移植手册的Led测试例程开发,目标板是TQ2440,使用内核EmbedSky-leds为设备文件,改变LED1 ——LED4的状态时开发板上的LED不受控制。界面程序如下: 1 #include "ledtest.h" 2 #include "ui_ledtest.h" 3 4 #include 5 #include 6 #include 7 #includestring.h&g
阅读全文
大家好,在学习Qt4.7的移植时按照TQ6410_QT4.7移植手册的Led测试例程开发,目标板是TQ2440,使用内核EmbedSky-leds为设备文件,改变LED1 ——LED4的状态时开发板上的LED不受控制。界面程序如下: 1 #include "ledtest.h" 2 #include "ui_ledtest.h" 3 4 #include 5 #include 6 #include 7 #includestring.h&g
阅读全文

浙公网安备 33010602011771号