QT****学习的第五天
一、铆接部件和中心部件
/ ******* * ** 铆接部件 ******** ** **/
QDockWidget* dock=new QDockWidget(this);//add
addDockWidget(Qt::LeftDockWidgetArea,dock);
QTextEdit* text=new QTextEdit(this);//set 一个中心部件
setCentralWidget(text);
dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::TopDockWidgetArea);
代码详解:
1 通过QDockWidget类创建dock,并指定父对象
2 添加铆接部件,使得部件的位置为左侧,经过这么几个部件的创建,可以发现,一些部件用的是add,一部分用的是set,这是因为如果部件是唯一的就是用的是set,可以是多个的时候就用add,如前面的菜单栏在一个窗口里面就只有一个,所以就用的是set
3 通过QTextEdit类创建一个对象,并指定了它的父对象
4 设置中心部件为text
5 对铆接部件的可以停靠的位置限定为左侧和顶部
二、Ui设计器的使用
添加部件
可以通过图片所示新建部件
一些部件可以通过拖动进行添加,如Push Button
总结:
1 Ui设计器比直接写代码要直观
2 使用Ui设计器比较高效
3 可以结合编写代码达到设计的要求
三、QT资源文件的添加
1.以绝对路径的方式添加图标
2.效果图如下
不过这样的坏处也是很明显的,那就是当文件不在了,或者程序在别的地方跑,都会出现图标不显示的结果
3.添加图标资源文件
以上是通过QT添加QT的资源文件来代替绝对路径会出现的问题
4.使用的方法
可以将绝对路径替换为图中的路径,可以解决文件移植的问题,资源文件会跟着程序发布而发布
也可以通过Ui设计器里的每个组件的属性改变图标
四、模态和非模态对话框的创建
1.模态对话框的创建
connect(ui->actionnewFile,&QAction::triggered,[=] (){
QDialog dlg(this);
dlg.exec();
qDebug()<<u8"打开对话框";
});
1 信号由actionnewFile组件发出,发出的信号是点击菜单的操作
2 创建一个类对象dlg,并指定父对象
3 调用的是类QDialog的槽函数,建立模态对话框
2.非模态对话框
connect(ui->actionnewFile,&QAction::triggered,[=] (){
QDialog* dlg=new QDialog(this);
dlg->setAttribute(Qt::WA_DeleteOnClose);
dlg->show();
qDebug()<<u8"打开对话框";
});
1 非模态对话框创建的dlg变量是在堆上的,所以随着函数的结束,变量是不会被释放的,所以保证了非模态对话框不会一闪而逝
2 对于模态对话框的创建的变量就不行了,因为模态对话框创建的是局部变量,也就是说是在栈上面的,会随着函数的结束而被销毁,所以用在非模态对话框上就不可以了
五、QMessageBox对话框
connect(ui->pb01,&QPushButton::clicked,this,[=] (){ int ret=QMessageBox::information(this,u8"提示",u8"你吃了吗?",QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
if(ret==QMessageBox::Yes)
{
qDebug()<<u8"是的,我已经吃过了!";
}
else
{
qDebug()<<u8"还没呢,还不饿";
}
});
connect(ui->pb02,&QPushButton::clicked,this,[=] (){
QMessageBox::question(this,u8"提问",u8"你吃了午饭吗?");
});
connect(ui->pb03,&QPushButton::clicked,this,[=] (){
QMessageBox::warning(this,u8"警告",u8"你千万要吃饭");
});
connect(ui->pb04,&QPushButton::clicked,this,[=] (){
QMessageBox::critical(this,u8"错误",u8"没吃饭会饿死的");
});
总结:
1 对于QMessage类,使用创建一个对象,并指定父对象的方法不建议使用,因为一般来说QMessage类使用的对像一般都是要非模态对话框的,所以并不保险
2 information静态函数 QMessageBox调用公有的静态方法也是一种原因不使用QMessage类创建对象
六、基本对话框
1.颜色对话框示例代码
connect(ui->pbChooseColor,&QPushButton::clicked,this,[=] (){
QColor crl=QColorDialog::getColor(Qt::cyan,this,u8"选择颜色");
qDebug()<<crl;
});
效果图:
2.文件选择对话框
connect(ui->pbChooseFile,&QPushButton::clicked,this, [=] (){
QString ret= QFileDialog::getSaveFileName(this,u8"保存文件",“C:\”," * .txt; * .cpp ; *.h");
qDebug()<<ret;
});
总结:
1 颜色对话框和文件对话框的信号都是点击,都使用了Lambda函数
2 颜色对话框的默认颜色是青色
3 文件对话框筛选了.txt,.cpp,.h文件
4 文件对话框设置的是保存文件,而没有选择打开文件