QT点滴

这篇博客涵盖了Qt编程的关键点,包括QObject的使用、信号与槽机制、QApplication的重要性、布局管理、菜单与工具栏的创建、Qt编译工具的介绍、模块系统及窗口管理。还提到了Qt与D-Bus的通信、关联容器的应用以及配置和构建流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ()
这个方法可以会的可执行程序的路径。

实际上QCoreApplication也是解析argv获得的这个路径,在你 QApplication app( argc, argv );
的时候它解析的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值