Qt_04

.ui

这个也没什么好说的,多做做就是了

就是有一个点,在添加组件时,要初始化组件,如果输入中文没反应,那这个初始化组件其实是在初始化该组件的一个对象,对象不能有中文吧,要给组件写上名称,在右下角

actionNew是该组件的对象的名,新建是该组件的标题




资源文件

一般的软件,新建选项的前面都有个图标吧,这是程序添加了图片文件

	ui->actionNew->setIcon(QIcon("D:\\favicon.png"));

这样是可以的,但问题是,我这个软件一旦在别的计算机打开,actionNew还能找到这个路径的图片吗?

显然是不能啊。所以Qt还增加了一个资源文件夹
项目文件02_QtRecoursesFile,点击鼠标右键,Add New

要添加资源文件,对res.qrc鼠标右击,Open in Editor

一般来说,要添加的资源文件都放在项目的目录下

其中,Add Prefix是创建前缀,Add Files是添加文件,先创建前缀,再在相应的前缀下添加文件,其实就是给你添加的资源文件进行分类,但不会另外创建文件夹,相当于打上了标记,所以为了项目的目录下不会一团乱,资源文件需要自行分类并放进相应的文件夹中


其中favicon.png是放在项目目录下的一个picture文件中,而.jpgTom.jpg是直接放在项目目录下,favicon.pngTom.jpg是添加了/pic前缀,.jpg添加了/前缀

然后也很明显可以看出不同的地方,同在/pic前缀下的两张图片,名字其实是不一样的,picture/favicon.png多了文件夹的名称,这在代码中使用资源文件,就是用这个完整的名称


资源文件的使用方法 —— : + 前缀名 + /文件名

    ui->actionNew->setIcon(QIcon(": /pic /picture/favicon.png"));
    ui->actionopen->setIcon(QIcon(": / /.jpg"));

在这里插入图片描述





这里还是说一下斜线和反斜线吧,\这是反斜线,如果在代码中要写路径,用反斜线分割,那就还需要再补充一个反斜线,对后面的反斜线进行转义;而这个/是斜线,代码中写路径就可以直接用
D:\\favicon.png 或者 D:/favicon.png

而一般Windows的文件夹,都是用反斜线分割的





对话框

对话框分为两种,模态和非模态,前者打开后无法操作其他窗口,后者可以

		// 模态
        QDialog dig(this) ;
        dig.resize(200,400);
        dig.exec();     			// 阻塞功能  不会一闪就退出  
        qDebug()<<"弹出对话框";		// main()函数中return exec();
        
		
		// 非模态
        QDialog dia3(this);
        dia3.resize(400,200);
        dia3.show();

		// 有点神奇 为什么new就不会一闪而过  
		//如果只是创建QDialog的对象 就会一下子执行完程序然后释放
        QDialog *dig2 = new QDialog(this);
        dig2->resize(200,400);
        dig2->show();
        
        dig2->setAttribute(Qt::WA_DeleteOnClose,true);   
        // 设置属性attribute  点击close后delete释放对象的标号是55
        

		
		connect(ui->actionNew,&QAction::triggered,this,[=](){
			QDialog *dig2 = new QDialog(this);
        	dig2->resize(200,400);
        	dig2->show();
        	dig2->setAttribute(Qt::WA_DeleteOnClose,true);  
        	// 因为dig2是依赖在QMainWindow上的 但关闭对话框 又不是关闭窗口 
        	// 所以不设置属性的话是不会释放dig2这个对象的
        	// 来回关闭创建多了 就会占满内存
    	});
			





QMessageBox标准对话框

在这里插入图片描述
Qt提供了几个QMessageBox的静态成员函数,可以直接通过类名调用,也可以通过实例化的对象调用

	QMessageBox::critical(this,"标题","内容");
	QMessageBox::about(this,"标题","内容");
	QMessageBox::aboutQt(this,"关于Qt!!!!!!!!!!!");





其中有一个对话框

	QMessageBox::question(this,"提问","ques");

在这里插入图片描述
默认是两个按钮,YesNo

再看看question这个函数的第四个参数QMessageBox::StandardButtons buttons = StandardButtons(Yes | No)
类型是StandardButtons的按钮,且缺省值是Yes | No

那我们就可以自主传入参数,在文档中搜一下QMessageBox::StandardButtons
enum是枚举类型,就是可以拿来直接用

传入参数

	QMessageBox::question(this,"提问","ques",QMessageBox::Save|QMessageBox::Cancel);

在这里插入图片描述

按钮就变了



然后再看看question的第5个参数QMessageBox::StandardButton defaultButton = NoButton
是默认选中,默认关联回车键的按钮,看Save按钮,是蓝边,敲回车就表示按Save按钮

QMessageBox::question(this,"提问","ques",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);

在这里插入图片描述



再看看这个函数的返回值,是QMessageBox::StandardButton ,所以如果要接收判断用户按的是Save还是Cancel,可以用==判断

if(QMessageBox::Save==QMessageBox::question(this,"提问","ques",QMessageBox::Save|QMessageBox::Cancel))
{
	qDebug()<<"保存";
}else 
{
	qDebug()<<"取消"; 	
}





文件对话框

#include <QFileDialog>

QFileDialog::getOpenFileName(this,"文件对话框","C:\\Users\\Fighting\\Desktop","(*.doc)");

第三个参数,默认是项目的路径;第四个参数是过滤不是.xx后缀的文件,但不会过滤文件夹

这个函数返回类型是QString

QString file =  QFileDialog::getOpenFileName(this,"文件对话框","C:\\Users\\Fighting\\Desktop","(*.docx)");
if(file!=nullptr) qDebug()<<file;

在这里插入图片描述





颜色选择对话框

#include <QColorDialog>

QColor color =  QColorDialog::getColor();
qDebug()<<color.red()<<" "<<color.green()<<" "<<color.blue();

在这里插入图片描述

多的也懒得说了,文档都有




字体对话框

#include <QFontDialog>
bool ok;
QFont font = QFontDialog::getFont(&ok,QFont("微软雅黑",20));
qDebug()<<font;

qDebug()<<font.family().toUtf8().data()<<" "<<font.pointSize()<<" ";

在这里插入图片描述
也没啥好说的,文档都有

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值