Qt:资源文件、对话框

资源文件、对话框

资源文件

添加资源有两种方式:本地资源和项目资源

本地资源

  • mainwindow.cpp的构造方法中添加该行代码:

    ui->actionNew_File->setIcon(QIcon("H:/Code/Qt/picture/new_file.png"));
    

    通过ui获得窗口元素,使用setIcon()方法设置图标,需要QIcon对象,其中资源的本地路径为绝对路径,注意:这里路径中使用/或者\\;

项目资源

导入资源

  1. 将资源放入到项目中

    在这里插入图片描述

  2. 添加资源

    右键项目名称->添加新文件->选择【File and Classes】中的【Qt】->选择【Qt Resource File】->点击下一步->取一个文件名,如:res -> 生成:res.qrc文件

    在这里插入图片描述

  3. 编辑资源文件

    右键生成的res.qrc文件,选择Open in Editor,即可进入编辑资源页面

    在这里插入图片描述

    • 添加前缀,即上方Prefix框,作用是为资源分类
    • 添加文件,即上方第2步,选择要添加的文件进行导入
    • 导入成功就能看到导入的文件,如图中3
    • 最后重新编译项目即可
  4. 使用资源

    语法:" : + 前缀名 + 文件名 "

    ui->actionNew_File->setIcon(QIcon(":/Image/new_file.png"));
    

    即可显示图标。

    在这里插入图片描述

对话框

自定义消息框

分为两种:模态对话框和非模态对话框

在创建时需要头文件:#include<QDialog>

  1. 模态对话框:弹出该对话框后,不可以对其它窗口进行操作(阻塞)。

    • exec()方法:通过模态的方式打开对话框;
    QDialog dlg1(this);   //通过类实例化一个对象,并指定父节点.
    dlg1.resize(120,30);  //重新设置窗口大小
    dlg1.exec();     //通过模态的方式打开,起到阻塞的状态
    
  2. 非模态对话框:弹出该对话框后,可以对其它窗口进行操作(不会阻塞)。

    • setAttribute()方法:通过非模态的方式打开对话框,注意其中的参数,通过查阅帮助文档查看该方法获取参数,该参数是枚举类型,很多!
    QDialog *dlg2 = new QDialog(this);//将该对象放在堆区,则不会被提前释放
    dlg2->show();     //通过非模态的方式打开
    dlg2->setAttribute(Qt::WA_DeleteOnClose);  //Qt::WA_DeleteOnClose关闭窗口时释放对象,防止内存泄露
    

在这里插入图片描述

 connect(ui->actionnew,&QAction::triggered,[=](){
        // QDialog dlg1(this);   //通过类实例化一个对象,并指定父节点.
        // dlg1.resize(120,30);  //重新设置窗口大小
        // dlg1.exec();     //通过模态的方式打开,起到阻塞的状态

        QDialog *dlg2 = new QDialog(this);//将该对象放在堆区,则不会被提前释放
        dlg2->show();     //通过非模态的方式打开
        dlg2->setAttribute(Qt::WA_DeleteOnClose);  //Qt::WA_DeleteOnClose关闭窗口时释放对象,防止内存泄露

        qDebug()<<"弹出对话框";
    }); //点击新建,弹出对话框

消息对话框

在这里插入图片描述
在这里插入图片描述

在创建时需要头文件:#include<QMessageBox>

  1. Critical消息对话框

    • 代码:将【文件】中的【新建】与消息对话框绑定,注意critical()方法的参数

       connect(ui->actionnew,&QAction::triggered,[=](){
              QMessageBox::critical(this,"critical","错误");
       }); //点击新建,弹出对话框
      
    • 效果:

      在这里插入图片描述

  2. information消息对话框

    • 代码:将【文件】中的【新建】与消息对话框绑定,注意information()方法的参数

       connect(ui->actionnew,&QAction::triggered,[=](){
             QMessageBox::information(this,"info","信息提示!");
       }); //点击新建,弹出对话框
      
    • 效果:

      在这里插入图片描述

  3. question消息对话框

    • 代码:将【文件】中的【新建】与消息对话框绑定,注意question()方法的参数

       connect(ui->actionnew,&QAction::triggered,[=](){
              QMessageBox::question(this,"question","询问");
       }); //点击新建,弹出对话框
      
    • 效果:

      在这里插入图片描述

    • 更改默认效果

       connect(ui->actionnew,&QAction::triggered,[=](){
           QMessageBox::question(this,"question","询问",QMessageBox::Save | QMessageBox::Cancel);
       }); //点击新建,弹出对话框
      

      其中:默认效果是QMessageBox::OK | QMessageBox::NO,我们在这里进行修改,效果如图:

      在这里插入图片描述

    • 修改默认激活状态,注意上图中【Save】是有蓝色选择的,进行修改

       connect(ui->actionnew,&QAction::triggered,[=](){
           QMessageBox::question(this,"question","询问",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel);
       }); //点击新建,弹出对话框
      

      设置第五个参数

      在这里插入图片描述

    • 得到返回值,进行逻辑判断

      connect(ui->actionnew,&QAction::triggered,[=](){
      	if(QMessageBox::Save == QMessageBox::question(this,"question","询问",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel)){
                  qDebug()<<"用户选择的是保存";
              }else{
                  qDebug()<<"用户选择的是取消";
              }
      }); //点击新建,弹出对话框
      
  4. warning消息对话框

    • 代码:将【文件】中的【新建】与消息对话框绑定,注意warning()方法的参数
    connect(ui->actionnew,&QAction::triggered,[=](){
        QMessageBox::warning(this,"warning","警告提示!");
    }); //点击新建,弹出对话框
    
    • 效果:
      在这里插入图片描述

标准对话框

  • QColorDialog:选择颜色;

    • 头文件:#include<QColorDialog>

    • 代码

      connect(ui->actionnew,&QAction::triggered,[=](){
      	QColorDialog::getColor();
      	QColorDialog::getColor(QColor(255,0,0));  //默认选择改为rgb:255,0,0
      	QColor color = QColorDialog::getColor(QColor(255,0,0));   //获得选择的颜色对象
          qDebug()<<color.red()<<color.green()<<color.blue();  //打印RGB的值
      }); //点击新建,弹出对话框
      
    • 效果

      在这里插入图片描述

  • QFileDialog:选择文件或者目录;

    • 头文件:#include<QFileDialog>

    • 代码

      connect(ui->actionnew,&QAction::triggered,[=](){
          //第二个参数命名打开窗口的标题,第三个参数指定默认打开路径,第四个参数进行文件过滤,使用QString进行获取
          QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\asus\\Desktop","(*.txt *.doc)");
          qDebug()<<str;  //打印的是文件的绝对路径,通过该路径即可进行相关文件读写操作
      }); //点击新建,弹出对话框
      
    • 效果

      在这里插入图片描述

  • QFontDialog:选择字体;

    • 头文件:#include<QFontDialog>

    • 代码

      connect(ui->actionnew,&QAction::triggered,[=](){
          bool ok;
          QFont font = QFontDialog::getFont(&ok,QFont("宋体",36));  //修改字体、大小并获取字体对象
          qDebug()<<font.family()<<font.pointSize()<<font.bold()<<font.italic(); //字体、大小、是否加粗、是否倾斜
      }); //点击新建,弹出对话框
      
    • 效果

      在这里插入图片描述

  • QInputDialog:允许用户输入一个值,并将其返回;

  • QMessageDialog:模态对话框,用于显示消息、询问问题等;

  • QPageSetupDialog:为打印机提供纸张相关的选项;

  • QPrintDialog:打印机配置;

  • QPrintPreviewDialog:打印预览;

  • QProgressDialog:显示操作过程;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值