您的位置:首页 > 教育 > 培训 > 广州海珠发布_海外游戏推广_营销型网站建设的主要流程包括_电脑版百度

广州海珠发布_海外游戏推广_营销型网站建设的主要流程包括_电脑版百度

2025/4/14 17:44:01 来源:https://blog.csdn.net/qq_62917398/article/details/147102637  浏览:    关键词:广州海珠发布_海外游戏推广_营销型网站建设的主要流程包括_电脑版百度
广州海珠发布_海外游戏推广_营销型网站建设的主要流程包括_电脑版百度

QT的消息盒子和对话框(自定义对话框)

  • 一、消息盒子QMessageBox
    • 1、弹出警告盒子
      • 示例代码:
      • 现象:
    • 2、致命错误盒子
      • 示例代码:
      • 现象:
    • 3、帮助盒子
      • 示例代码:
      • 现象:
    • 4、示例代码:
  • 二、QT中自带的对话框
    • 1、颜色对话框 QColorDialog
      • 1)方法
        • 示例代码:
        • 现象:
    • 2、字体对话框 QFontDialog
      • 1) 方法
        • 示例代码:
        • 现象:
    • 3、文件对话框 QFileDialog
      • 1) 方法:弹出文件对话框,让用户可以选择某个具体的文件
        • 示例代码:
        • 现象:
      • 2) 方法:弹出目录对话框,只能让用户选择目录,不可以选择目录中具体文件
        • 示例代码:
  • 三、自定义对话框
    • 1.模态和非模态
      • 示例代码:
      • 现象:

一、消息盒子QMessageBox

1、弹出警告盒子

[static] StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)返回值:点击了盒子里面的哪个按钮,返回值就返回这个按钮参数:parent --this,父窗口title --》消息盒子的标题text --》盒子里面的文本内容 buttons --》盒子默认使用哪些按钮,默认使用ok按钮如果要添加多个按钮,多个按钮之间使用 按位或 连接起来defaultButton --》当按下回车键,默认选中的按钮

示例代码:

QMessageBox::warning(this, "警告","您输入的账号或密码错误,请重新输入", QMessageBox::Close | QMessageBox::Ok, QMessageBox::Close);

现象:

在这里插入图片描述

2、致命错误盒子

[static] StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
// 定义如警告盒子

示例代码:

QMessageBox::critical(this, "致命错误","您输入的账号或密码错误,请重新输入", QMessageBox::Close | QMessageBox::Ok, QMessageBox::Close);

现象:

在这里插入图片描述

3、帮助盒子

[static] StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButton defaultButton = NoButton)
// 定义如警告盒子

示例代码:

QMessageBox::question(this, "帮助","您输入的账号或密码错误,请重新输入", QMessageBox::Close | QMessageBox::Ok, QMessageBox::Close);

现象:

在这里插入图片描述

  如何判断点击了哪个按钮
方法:通过warning函数的返回值判断,具体参见例子代码if(ret==QMessageBox::Ok){}else  //其他按钮{}

4、示例代码:

auto ret = QMessageBox::question(this, "帮助","您输入的账号或密码错误,请重新输入", QMessageBox::Close | QMessageBox::Ok, QMessageBox::Close);
if (ret == QMessageBox::Ok)
{// 按实际逻辑做处理qDebug()<<"点击的是ok";
}
else
{qDebug()<<"点击的是close";
}

二、QT中自带的对话框

1、颜色对话框 QColorDialog

1)方法

[static] QColor QColorDialog::getColor(const QColor &initial = Qt::white, QWidget *parent = Q_NULLPTR, const QString &title = QString())返回值:弹出的对话框所选中的颜色参数:initial --》颜色对话框默认选中的颜色//依据RGB的值新建颜色对象QColor(int r, int g, int b)   parent --》父窗口 thistitle --》颜色对话框的标题如何判断用户是否选中了某个颜色bool QColor::isValid() const返回值:如果用户点击ok  --》颜色就是合法,返回true反之,返回false
示例代码:
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_btn1_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QColorDialog>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}// 颜色对话框
void MainWindow::on_btn1_clicked()
{QColor color1(0, 0, 255);// 弹出颜色对话框QColor color_ret = QColorDialog::getColor(color1, this, "颜色对话框");// 判断用户是点击了ok还是cancelif(color_ret.isValid()){qDebug()<<"点击了ok";// 拼接得到qss语句QString set_style = QString("background-color:rgb(%1,%2,%3);").arg(color_ret.red()).arg(color_ret.green()).arg(color_ret.blue());// 把按钮的背景色设置成自己选择的颜色ui->btn1->setStyleSheet(set_style);}else{qDebug()<<"点击了cancel";}
}
现象:

在这里插入图片描述

2、字体对话框 QFontDialog

1) 方法

[static] QFont QFontDialog::getFont(bool *ok, QWidget *parent = Q_NULLPTR)返回值:所选中的字体参数:ok --》保存是否选中了某个字体,选中了 --true  没有选中 --falseparent --》父窗口 this
如何判断用户是否选中了某个字体方法:判断getFont的第一个参数是否为真
QString QFont::family() const返回值:返回选中的字体名字
int QFont::pointSize() const 返回值:返回选中的字体大小
示例代码:
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFontDialog>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{bool is_ok;QFont myFont = QFontDialog::getFont(&is_ok, this);if (is_ok){qDebug()<<"选择了ok";ui->label->setFont(myFont);}else{qDebug()<<"选择了concel";}
}
现象:

在这里插入图片描述

3、文件对话框 QFileDialog

1) 方法:弹出文件对话框,让用户可以选择某个具体的文件

[static] QString QFileDialog::getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString())返回值:选中的某个文件的绝对路径名参数:parent --》父窗口 thiscaption --》文件对话框的标题dir --》指定要打开的目录路径filter --》文件过滤器,过滤掉不需要的文件比如: "*.txt"        表示只想查看文件夹中的记事本"*.txt *.bmp"  表示想查看文件夹中的记事本和bmp图片
示例代码:
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QString pathName = QFileDialog::getOpenFileName(this, "打开的文件对话框", "C:/Users/xxx/Desktop/vm_shared/code/QT_proj/250406_test", "*txt *xls");qDebug()<< "选择的文件是"<< pathName;
}
现象:

在这里插入图片描述

2) 方法:弹出目录对话框,只能让用户选择目录,不可以选择目录中具体文件

[static] QString QFileDialog::getExistingDirectory(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString())返回值:选中的某个目录的绝对路径名参数:parent --》父窗口 thiscaption --》目录对话框的标题dir --》指定要打开的目录路径
示例代码:
 // 打开目录对话框
QString dirPath = QFileDialog::getExistingDirectory(this, "目录");

三、自定义对话框

QT添加新的ui界面总共提供三种模板,三者区别
dialog --》作为独立的弹窗来使用
mainwindow --》多界面跳转,界面直接切换
widget --》作为子窗口来使用,嵌套到mainwindow

如何新建Qdialog:
右键点击工程名–》QT设计师界面类,选择QDialog模板

1.模态和非模态

          模态对话框 --》exec(),对话框如果不关闭,无法操作其他界面非模态对话框 --》show(),对话框如果不关闭,不影响操作其他界面

示例代码:

firstwin.h firstwin.cpp

// firstwin.h
#ifndef FIRSTWIN_H
#define FIRSTWIN_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class firstwin; }
QT_END_NAMESPACEclass firstwin : public QMainWindow
{Q_OBJECTpublic:firstwin(QWidget *parent = nullptr);~firstwin();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::firstwin *ui;
};
#endif // FIRSTWIN_H// firstwin.cpp
#include "firstwin.h"
#include "ui_firstwin.h"
#include <QDebug>
#include "secondwin.h"
#include "regdialog.h"
firstwin::firstwin(QWidget *parent): QMainWindow(parent), ui(new Ui::firstwin)
{ui->setupUi(this);
}firstwin::~firstwin()
{delete ui;
}//登录按钮的槽函数
void firstwin::on_pushButton_clicked()
{//获取输入的用户名和密码QString name=ui->lineEdit->text();QString passwd=ui->lineEdit_2->text();if(name=="hello" && passwd=="123456"){//跳到主界面--》第二个界面//创建第二个界面对象secondwin *win=new secondwin();//显示第二个界面win->show();//关闭第一个界面this->close();}elseqDebug()<<"登录失败";
}
//注册按钮对应的槽函数
void firstwin::on_pushButton_2_clicked()
{//弹出注册对话框regdialog *dialog=new regdialog(this);//显示对话框//dialog->show();  //非模态对话框dialog->exec();    //模态对话框
}

secondwin.cpp secondwin.h

// secondwin.h
#ifndef SECONDWIN_H
#define SECONDWIN_H#include <QMainWindow>namespace Ui {
class secondwin;
}class secondwin : public QMainWindow
{Q_OBJECTpublic:explicit secondwin(QWidget *parent = nullptr);~secondwin();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::secondwin *ui;
};#endif // SECONDWIN_H// secondwin.cpp
#include "secondwin.h"
#include "ui_secondwin.h"secondwin::secondwin(QWidget *parent) :QMainWindow(parent),ui(new Ui::secondwin)
{ui->setupUi(this);
}secondwin::~secondwin()
{delete ui;
}void secondwin::on_pushButton_clicked()
{//证明QWidget一般作为子窗口嵌套到QMainWindow里面ui->widget->hide();
}void secondwin::on_pushButton_2_clicked()
{//证明QWidget一般作为子窗口嵌套到QMainWindow里面ui->widget->show();
}

regdialog.h regdialog.cpp

// regdialog.h
#ifndef REGDIALOG_H
#define REGDIALOG_H#include <QDialog>namespace Ui {
class regdialog;
}class regdialog : public QDialog
{Q_OBJECTpublic:explicit regdialog(QWidget *parent = nullptr);~regdialog();private:Ui::regdialog *ui;
};#endif // REGDIALOG_H// regdialog.cpp
#include "regdialog.h"
#include "ui_regdialog.h"regdialog::regdialog(QWidget *parent) :QDialog(parent),ui(new Ui::regdialog)
{ui->setupUi(this);
}regdialog::~regdialog()
{delete ui;
}

现象:

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com