Qt之各种对话框(信号和槽)

一、多窗口切换

第一步:首先创建一个项目,之后进入ui设计模式,在左侧找到Label和Push Button这两个左键拖入。

第二步:双击Label将其修改为主界面,之后在Push Button 右键选择clicked()转到槽。

第三步:在函数槽中添加:(需要包含#include

void MainWindow::on_pushButton_clicked()
{
    QDialog * dialog = new QDialog(this);   //创建一个新的会话窗口
    dialog -> show();
}
第四步:运行点击PushButton 实现多窗口。


二、颜色对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

 QColor color = QColorDialog::getColor(Qt::red,this,QObject::tr("颜色对话框"));
this 代表对象本身  ::区域运算符 代表使用某个类中的函数或变量等


三、文件对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

    QString filename = QFileDialog::getOpenFileName(this,QObject::tr("文件对话框"),"D:",QObject::tr("图片文件(*png *jpg)"));
 
  

表示打开D:盘查看png或ipg的文件。*png和*jpg两者之间有一个空格。

Qt之各种对话框(信号和槽)_第1张图片

四、字体对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

void MainWindow::on_pushButton_4_clicked()
{
   bool ok;                                          //判断标志,判断是否点击了ok确定按钮
   QFont font = QFontDialog::getFont(&ok,this);
   if(ok)
       ui -> pushButton_4-> setFont(font);              //将字体设置为所选字体
}
结果图:

Qt之各种对话框(信号和槽)_第2张图片

五、输入消息对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

  bool ok;
    QString string = QInputDialog::getText(this,QObject::tr("输入字符串对话框"),
                                           QObject::tr("请输入用户名:"),QLineEdit::Normal
                                           ,QObject::tr("admin"),&ok);
    if(ok)
        qDebug()<<"string:"< 
  
 
  
    int value1 = QInputDialog::getInt(this,QObject::tr("请输入整数对话框"),
                                      QObject::tr("请输入-1000~1000之间的数值"),100,-1000,1000,10,&ok);
    if(ok)
        qDebug()<<"value1:"< 
  
 
  
    double value2 = QInputDialog::getDouble(this,QObject::tr("输入浮点数对话框"),
                                            QObject::tr("请输入-1000~1000之间的数值"),0.00,-1000,1000,2,&ok);
    if(ok)
        qDebug()<<"value2:"< 
  
    QStringList items;
    items<<QObject::tr("条目1")<<QObject::tr("条目2");
    QString item = QInputDialog::getItem(this,QObject::tr("输入条目对话框"),
                                         QObject::tr("请选择一个条目"),items,0,false
                                         ,&ok);
    if(ok)
        qDebug()<<"item:"< 
  

用户名-》QLineEdit::Normal//模式为输入显示内容
整数->10 表示上下增减按钮一次增或者减10

浮点数->2表示小数点后留两位

条目-> 0表示默认显示第0个条目,true表示条目是否可以更改(true为可修改)。

结果图:

Qt之各种对话框(信号和槽)_第3张图片Qt之各种对话框(信号和槽)_第4张图片Qt之各种对话框(信号和槽)_第5张图片

六、消息对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

int ret1 = QMessageBox::question(this,QObject::tr("问题对话框"),
                                     QObject::tr("你了解Qt么?"),QMessageBox::Yes,QMessageBox::No);
    if(ret1 == QMessageBox::Yes)
        qDebug()<<QObject::tr("问题!");
 
  
    int ret2 = QMessageBox::information(this,QObject::tr("提示对话框"),
                                     QObject::tr("这是Qt书籍!"),QMessageBox::Ok);
    if(ret2 == QMessageBox::Ok)
        qDebug()<<QObject::tr("提示!");
 
  
    int ret3 = QMessageBox::warning(this,QObject::tr("警告对话框"),
                                     QObject::tr("不能提前结束!"),QMessageBox::Abort);
    if(ret3 == QMessageBox::Abort)
        qDebug()<<QObject::tr("警告!");
 
  
    int ret4 = QMessageBox::critical(this,QObject::tr("严重错误对话框"),
                                     QObject::tr("发现了一个严重错误!现在要关闭所有文件!"),QMessageBox::YesAll);
    if(ret4 == QMessageBox::YesAll)
        qDebug()<<QObject::tr("错误!");
 
  
    QMessageBox::about(this,QObject::tr("关于对话框"),QObject::tr("Qt gongzuo!"));


结果图:

Qt之各种对话框(信号和槽)_第6张图片Qt之各种对话框(信号和槽)_第7张图片

七、进度对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

 QProgressDialog dialog(QObject::tr("文件复制进度"),QObject::tr("取消"),0,50000,this);    //50000运行次数
 
  
    dialog.setWindowTitle(QObject::tr("进度对话框"));
    dialog.setWindowModality(Qt::WindowModal);                      //将对话框设置为模态(不可交互,只能等一个结束另一个才可以运行)
 
  
    dialog.show();
    for(int i = 0;i < 50000;i++)
    {
        dialog.setValue(i);                                         //每一次将值改标为i
        QCoreApplication::processEvents();			//避免长时间传输导致界面冻结
        if(dialog.wasCanceled())                                 //如果点击cancel按钮则取消传输
            break;
    }
    dialog.setValue(50000);
    qDebug()<<QObject::tr("复制结束!");
结果图:

Qt之各种对话框(信号和槽)_第8张图片

八、向导对话框

添加一个按钮(Push Button)(需要头文件#include

1、首先在xxx.h文件中添加#include

添加声明:

private:
    Ui::MyWidget *ui;
 
  
    QWizardPage * createPage1();
    QWizardPage * createPage2();
    QWizardPage * createPage3();

目的是生成三个向导页面。

2、在xxx.cpp文件中定义

QWizardPage * MyWidget::createPage1()
{
    QWizardPage * page = new QWizardPage;
    page -> setTitle(QObject::tr("介绍"));
    return page;
}
 
  
QWizardPage * MyWidget::createPage2()
{
    QWizardPage * page = new QWizardPage;
    page -> setTitle(QObject::tr("用户选择信息"));
    return page;
}
 
  
QWizardPage * MyWidget::createPage3()
{
    QWizardPage * page = new QWizardPage;
    page -> setTitle(QObject::tr("结束"));
    return page;
}
3、在槽中定义:

    QWizard wizard(this);
    wizard.setWindowTitle(QObject::tr("向导对话框"));
    wizard.addPage(createPage1());
    wizard.addPage(createPage2());
    wizard.addPage(createPage3());
    wizard.exec();
结果图:

Qt之各种对话框(信号和槽)_第9张图片

九、错误信息对话框

添加一个按钮(Push Button),右键转到槽添加:(需要头文件#include

QErrorMessage * dialog = new QErrorMessage(this);
    dialog -> setWindowTitle(QObject::tr("错误消息对话框"));
    dialog -> showMessage(QObject::tr("这里是出错信息"));
结果图:

Qt之各种对话框(信号和槽)_第10张图片


你可能感兴趣的:(Qt)