QtCreator
一、创建UI文件:
1创建并初始化子窗口部件
2.把子窗口部件放到布局中
3.设置Tab键顺序
4.建立信号-槽之间的连接
5.实现对话框中的自定义槽
保存为gotocell.ui
Qt中的内建的对话框
QMessageBox
QColorDialog
QFileDialog
QErrorDialog
二、QT使用设计文件有三种方式:
直接使用
单一继承方式
多继承方式
将ui文件加入到工程,然后建立gotocell.h和gotocell.cpp
自己创建一个新类让其从QDialog和Ui::GoToCellDialog中继承出来:建立gotocelldialog.h文件,并由它实现一些功能:
#ifndefGOTOCELLDIALOG_H
#defineGOTOCELLDIALOG_H
#include
#include"ui_gotocelldialog.h"
class GoToCellDialog:publicQDialog,public Ui::GoToCellDialog
{
public:
private slots:
};
#endif //GOTOCELLDIALOG_H
在源文件中:
#include
#include"gotocelldialog.h"
GoToCellDialog::GoToCellDialog(QWidget *parent)
{
}
在mian中
#include
#include
//#include"ui_gotocelldialog.h"
#include"gotocelldialog.h"
int main(int argc, char*argv[])
{
}
三、信号和槽
一个槽就相当于一个函数,槽函数即可与信号关联,也可当普通函数直接调用
bool QObject::connect ( constQObject * sender, const char * signal, const char * method,Qt::ConnectionType type = Qt::AutoConnection ) const
例如:connect(ui.comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(do_combox_change()));
四、多线程:
QT中使用线程,只需要继承QThread类并实现其run()函数,
class myThread : publicQThread
{
Q_OBJECT
protected:
};
void MyThread::run()
{……}
只需在run()函数中填写所需的功能代码,然后创建一个MyThread实例,并以QThread::start()函数启动这个实例即可。这样run()函数中功能代码就运行在一个独立的线程中了。
Run()函数实际是个死循环。
要编译此应用还需要在.pro中加入一行
CONFIG +=thread
使用QMutex类的lock函数用来锁住互斥量,unlock用来解锁
QT中的信号量是由QSemaphore类提供的,互斥量只能锁定一次而信号量可以获取多次,它可以用来保护一定数量的同种资源。acquire(n)用于获取n个资源,当没有足够的资源时调用者将被阻塞,直到有足够的可用资源,release(n)可释放n个资源,tryAcquire(n)在没有足够资源时立即返回。