1.快捷键
(1)ctrl + r 运行
(2)F1查找需要添加的头文件
2.#应用程序的名字
TARGERT = mike
#指定makefile的类型,app
TEMPLATE = app
应用程序所在位置:debug文件夹中
3.connect
实例一:connect(&b1,&QPushButton::pressed,this,&MainWidget::close);
注释:&b1:信号发出者,指针类型
&QPushButton::pressed: 处理的信号 &发送者的类名::信号名字
this:信号接受者
&MainWidget:::close: 槽函数,信号处理函数 &接受的类名::槽函数名字
由于信号没有返回值,所以,槽函数一定没有返回值。
实例二:
connect(b4,&QPushButton::clicked, // = :把外部所有局部变量、类中所有成员以值传递方式
[=](bool isCheck) // this:类中所有成员以值传递方式
{ //&:把外部所有局部变量,引用符号
qDebug() << isCheck;
}
);
4. 内存回收
(1)指定父对象后
(2)直接或间接继承于QObject,子对象如果是动态分配空间的new,不需要手动释放delete,系统会自动释放。
5.菜单栏
PC端常用的是QMain
头文件:#include
//菜单栏 QMenuBar *mBar = menuBar();
//添加菜单 QMenu *pFile = mBar->addMenu("文件")
//添加菜单项,添加动作 QAction *pNew = pFile->addAction(“新建”);
效果如图:
(1)问题对话框
头文件:#QMessageBox
用法:
QAction *p4 = menu->addAction("问题对话框");
connect(p4,&QAction::triggered,
[=]()
{
int ret = QMessageBox::question(this,"question","Are you ok?");
switch(ret)
{
case QMessageBox::Yes:
qDebug() << "i am ok";
case QMessageBox::No:
qDebug() << "i am bad";
default:
break;
}
}
);
(2)文件对话框
QAction *p5 = menu->addAction("问题对话框");
connect(p5,&QAction::triggered,
[=]()
{
QString path = QFileDialog::getOpenFileName(this,"open","../");
QString path = QFileDialog::getOpenFileName(
this,
"open",
"../",
"souce(*.cpp *.h);;Text(*.txt);;all(*.*))";
});
6.工具栏,菜单项的快捷方式
QToolBar *toolBar = addToolBar("toolBar");
工具栏添加快捷键
toolBar->addAction(pNew);
QPushButton *b = new QPushButton(this);
b->setText("~_~");
//添加小控件
toolBar->addWidget(b);
connect(b,&QPushButton::clicked,
[=]()
{
b->setText("123");
}
);
7.状态栏
t头文件:#include
QStatusBar *sBar = statusBar();
QLable *label = new QLabel(this);
label->setText("NorMal text file");
sBar->addWidget(label);
//addWidget 从左往右添加
sBar->addWidget(new QLabel("2",this))
//addPermanentWidget 从右往左添加
sBar->addPermanentWidget(new QLabel("3",this));
;8.核心控件
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
9.浮动窗口
头文件#include
QDockWidget *dock = new QDockWidget(this);
addDockWidget(QT::RightDockWidgetArea,dock);
//给浮动窗口添加控件
QTextEdit *textEdit1 = new QTextEdit(this);
dock->setWidget(textEdit1 );
10.模态与非模态
模态对话框 用dlg.exec() 运行,程序运行到此看,会暂停,等待用户操作此窗口,后面的窗口点击没有反应。
非模态对话框 用dlg.show(0运行,由于程序执行很快,会立即结束show()。要想等待 则把非模态对话框 动态分配 指定父对象 重新new一个,程序结束时释放
例子:
QMenuBar *mBar = menuBar();
setMenuBar(mBar);
QMenu *menu = mBar->addMenu("对话框");
QAction *pl = menu->addAction("模态对话框");
connect(pl,&QAction::triggered,
[=]()
{
QDialog dlg;
dlg.exec();//运行到此,后面窗口的程序 不能点了
QDebug() << "11111"; //在关闭dlg时,会出打印信息。
}
);
11.设计器的使用(带ui的)