QT学习的第五天

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 文件对话框设置的是保存文件,而没有选择打开文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值