1.使用QObject继承的对象用new分配,否则在stack上分配,QFile、QApplication在stack上分配,模式对话框也在stack上分配。
2.若要使用信号和槽,必须继承 QObject 或其子类,并在类的定义中包括 Q_OBJECT 宏。信号
在类的“信号区”声明,而槽则是在“公有槽区”、“保护槽区”或“私有槽区”中声明的。槽是一个void成员函数。
多个信号可以连接到一个槽,通过connect连接。connect是QObject的一个静态成员方法。
3.每个GUI、多线程或者事件驱动的Qt应用程序都必须在main函数开始处定义一个QApplication对象。并通过调用exec()来实例化事件循环。
4.QLayout一个布局中的部件并不是此布局的子对象,可以理解为起保姆作用的大哥哥。(QVBoxLayout/QHBoxLayout/ QGridLayout/QStackedLayout)主要函数:addWidget() setLayout()
5.window下发布Qt程序需要的dll文件:QtCore4.dll QtGui4.dll msvcr80.dll (通过工具depend)
6.Qt GUI部件是QWidget派生类的对象,QWidget是从QObject和QPaintDevice继承的类。分类:按钮/输入/显示/容器,其他的如对话框/视图等。
7.关于菜单/工具栏的使用
8.Qt 的编译工具:Configure, Qmake,
Moc, --Meta-Object Compiler
Uic Ui Compiler
Rcc Resource Compiler
9. QAxContainer只能在windows下使用。ActiveX是微软的东西,linux下没有。QT中的QAxServer模块把一个QT程序转化为一个Activex控件
Qt-4.2版本引入D-Bus作为进程通信的一个方法之后,它就越来越有取代qcop的趋势。它不仅在应用层之间可以互相通信,还可以和内核做通信。比如某些硬件事件的发生,就可以通过D-Bus来交互。Linux系统中的蓝牙bluez正是使用了这种D-Bus.http://www.qtcn.org/bbs/read.php?tid=18555
10. Qt的模块 QtCore QtGui QtNetwork QtSql QtXml QtOpenGL Phonon WebKit QtSvg QtScript Qt3Support
QtDesigner QTestLib
11. Configure qmake make
qmake -project 生成pro文件-----> qmake 生成Makefile -------->make生成应用程序
12.一个关联容器保存同种类型的任意个数的项,由key作索引。Qt提供关联容器类:QSet<T> QMap<K, T> QMultiMap 和QHash<K, T> QMultiHash。
13. http://doc.qt.nokia.com/qq/ Qt Quarterly
14. qmake -tp vc -o adf.vcproj adf.pro 从pro文件转换为vs2005工程文件
15. QDesktopServices::openUrl (QUrl::fromLocalFile(filefullname));
16. /* 设置窗口总在最前 */
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
17. QSettings:
write:
QSettings settings("Seeker.ini", QSettings::IniFormat);
settings.setValue("pos", pos());
settings.setValue("size", size());
read:
QSettings settings("Seeker.ini", QSettings::IniFormat);
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("size", QSize(400, 400)).toSize();
18. QFileDialog设置多种文件选择:fileDialog->setFilter(tr("txt File(*.txt);;m3u File(*.m3u)"));
19. QCoreApplication::applicationDirPath ()
这个方法可以会的可执行程序的路径。
的时候它解析的。