龙空技术网

学习QT之基本对话框

QT教程 227

前言:

而今兄弟们对“对话框确定按钮看不到”大约比较关切,你们都需要了解一些“对话框确定按钮看不到”的相关内容。那么小编在网摘上汇集了一些对于“对话框确定按钮看不到””的相关知识,希望兄弟们能喜欢,朋友们一起来学习一下吧!

常用的标准基本对话框包括:标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialot)、标准消息对话框(QMessageBox)

各种标准基本对话框通过调用陪你过各自不同的静态函数来完成其功能,具体说明见下表:

相关类

类说明

静态函数

函数说明

getOpenFileName

获得用户选择的文件名

QFileDialog

标准文件对话框

getSaveFileName

获得用户保存的文件名

getExistingDirectory

获得用户选的的已存在的目录名

getOpenFileNames

获得用户选择的文件名列表

QColorDialog

标准颜色对话框

getColor

获得用户选择的颜色值

QFontDialog

标准字体对话框

getFont

获得用户选择的字体

getText

标准字符串输入对话框

QInputDialog

标准输入对话框

getItem

下拉表条目输入框

getInt

int类型数据输入对话框

getDouble

double类型数据输入对话框

QMessageBox::question

Question消息框

QMessageBox::information

Information消息框

Question消息框

标准消息对话框

QMessageBox::warning

Warning消息框

QMessageBox::critical

Critical消息框

QMessageBox::about

About消息框

QMessageBox::aboutQt

About Qt消息框

Qt学习基地:C/C++项目实战/Qt5/C语言/c++/数据库/OpenCV/MFC/QT项目-学习视频教程-腾讯课堂

一、标准文件对话框

1、函数原型说明

QString QFileDialog::getOpenFileName(QWidget* parent = 0, //标准文件对话框的父窗口const QString & caption = QString(), //标准文件对话框的标题名const QString & dir = QString(), //注(1)const QString & filter = QString(), //注(2)QString * selectedFilter=0, //用户选择的过滤器通过此参数返回Options options=0 //选择显示文件名的格式,默认是同时显示目录与文件名)

注(1):指定了默认的目录,若此参数带有文件名,则文件将是默认选中的文件。

注(2):此参数对文件类型进行过滤,只有与过滤器匹配的文件类型才显示,可以同时指定多种过滤方式供用户选择,多种过滤器之间使用​;;​​隔开。

2、使用示例

void Dialog::showFile(){QString s = QFileDialog::getOpenFileName(this,"open file dialog","/","C++ files(*.cpp);;C files(*.c);;Head files(*.h)");//第一个参数:标准文件对话框的父窗口;第二个参数:标准文件对话框的标题;第三个参数:指定默认的目录;第四个参数:文件过滤器fileLineEdit->setText(s);}

3、运行结果

二、标准颜色对话框

1、函数原型说明

QColor::getColor(const QColor & initial = Qt::white, //注(1)QWidget* parent = 0 //标准颜色对话框的父窗口)

注(1):指定了默认选中的颜色,默认为白色。通过QColor::isValid()函数可以判断用户选择的颜色是否有效,但是当用户选择文件是,如果选择“取消”(Cancel),则QColor::isValid()函数将返回false。

2、使用示例

void Dialog::showColor(){QColor c = QColorDialog::getColor(Qt::blue);if(c.isValid()){colorFrame->setPalette(QPalette(c));}}

3、运行结果

三、标准字体对话框

1、函数原型说明

QFont::getFont(bool* ok, //注(1)QWidget* parent = 0 //标准字体对话框的父窗口)

注(1):若用户单击“OK”按钮,则该参数*ok为true,函数返回用户所选择的字体;否则,将设为false,此时函数返回默认字体。

2、使用示例

void Dialog::showFont(){bool ok;QFont f = QFontDialog::getFont(&ok);if(ok)fontLineEdit->setFont(f);}

3、运行结果

四、标准输入对话框

1、函数原型说明

标准字符串输入对话框

QString getText(QWidget* parent, //标准输入对话框的父窗口const QString& title, //标准输入对话框的标题名const QString& label, //标准输入对话框的标签提示QLineEdit::EchoMode mode=QLineEdit::Normal,//指定标准输入对话框中QLineEidt控件的输入模式const QString& text = QString(), //标准字符输入对话中弹出式QLineEdit控件默认出现的文字bool* ok = 0, //注(1)Qt::WindowFlags flags = 0 //指明标准输入对话框的窗体标识)

注(1):指示标准输入对话框的哪个按钮被触发,若为true,则表示用户单击了“OK”(确定)按钮;若为false,则表示用户单击了“Cancle”(取消)按钮。

标准条目选择对话框

QString getItem(QWidget* parent, //标准输入对话框的父窗口const QString& title, //标准输入对话框的标题名const QString& label, //标准输入对话框的标签提示const QStringList& items, //注(1)int current = 0, //注(2)bool editable = true, //指定QComboBox控件中显示的文字是否可编辑bool* ok = 0, //注(3)Qt::WindowFlags flags = 0 //指明标准输入对话框的窗体标识)

注(1):指定标准输入对话框中QComboBox控件显示的可选条目为一个QStringList对象

注(2):标准条目选择对话框弹出时QComboBox控件中默认显示的条目序号

注(3):指示标准输入对话框的哪个按钮被触发,若ok为true,则表示用户单击了“OK”(确定)按钮;若ok为false,则表示用户单击了“Cancle”(取消)按钮。

标准int类型输入对话框

int getInt(QWidget* parent, //标准输入对话框的父窗口const QString& title, //标准输入对话框的标题名const QString& label, //标准输入对话框的标签提示int value = 0, //指定标准输入对话框中QSpinBox控件的默认显示值int min = -2147483647, //指定QSpinBox控件的数值范围int max = 2147483647, //指定QSpinBox控件的数值范围int step = 1, //指定QSpinBox控件的步进值bool* ok = 0, //注(1)Qt::WindowFlags flags = 0 //指明标准输入对话框的窗口标识)

注(1):用于指示标准输入对话框的哪个按钮被触发了。若OK为true,则表示用户单击了“OK”(确定)按钮;若OK为false,则表示用户单击了“Cancel”(取消)按钮。

标准double类型输入对话框

double getDouble(QWidget* parent, //标准输入对话框的父窗口const QString& title, //标准输入对话框的标题名const QString& label, //标准输入对话框的标签提示double value = 0, //指定标准输入对话框中QSpinBox控件默认的显示值double min = -2147483647, //指定QSpinBox控件的数值范围double max = 2147483647, //指定QSpinBox控件的数值范围int decimals = 1, //指定QSpinBox控件的步进值bool* ok = 0, //注(1)Qt::WindowFlags flags = 0 //指明标准输入对话框的窗口标识)

注(1):用于指示标准输入对话框的哪个按钮被触发,若OK为true,则表示用户单击了“OK”(确定)按钮;若OK为false,则表示用户单击了“Cancel”(取消)按钮。

2、使用示例

void InputDlg::ChangeName(){bool ok;QString text = QInputDialog::getText(this,tr("标准字符串输入对话框"),tr("请输入姓名:"),QLineEdit::Normal,nameLabel2->text(),&ok);if(ok && !text.isEmpty())nameLabel2->setText(text);}void InputDlg::ChangeSex(){QStringList SexItems;SexItems<<tr("男")<<tr("女");bool ok;QString SexItem = QInputDialog::getItem(this,tr("标准条目选择对话框"),tr("请选择性别:"),SexItems,0,false,&ok);if(ok && !SexItem.isEmpty())sexLabel2->setText(SexItem);}void InputDlg::ChangeAge(){bool ok;int age = QInputDialog::getInt(this,tr("标准int类型输入对话框"),tr("请输入年龄:"),ageLabel2->text().toInt(&ok),0,100,1,&ok);if(ok)ageLabel2->setText(QString(tr("%1")).arg(age));}void InputDlg::ChangeScore(){bool ok;double score = QInputDialog::getDouble(this,tr("标准double类型输入对话框"),tr("请输入成绩:"),scoreLabel2->text().toDouble(&ok),0,100,1,&ok);if(ok)scoreLabel2->setText(QString(tr("%1")).arg(score));}

3、运行结果

五、标准消息对话框

1、函数原型说明

Question消息框

StandardButton QMessage::question(QWidget* parent, //消息框的父窗口指针const QString& title, //消息框的标题栏const QString& text, //消息框的文字提示信息StandardButtons buttons = ok, //注(1)StandardButton defaultButton = NoButton //注(2))

注(1):填写希望在消息框中出现的按钮,可根据需要在标准按钮中选择,用​​|​​连写,默认为QMessageBox::Ok。QMessageBox类提供了许多标准按钮,如QMessageBox::Ok、QMessageBox::Close、QMessage::Discard等。虽然在此可以选择,但并不是随意选择的,应注意按常规成对出现。例如,通常Sava与Discard成对出现,而Abort、Retry、Ignore则一起出现。

注(2):默认按钮,即消息框出现时,焦点默认处于哪个按钮上。

Information消息框

StandardButton QMessage::information(QWidget* parent, //消息框的父窗口指针const QString& title, //消息框的标题栏const QString& text, //消息框的文字提示信息StandardButtons buttons = ok, //同Question消息框的注释内容StandardButton defaultButton = NoButton //同Question消息框的注释内容)

Warning消息框

StandardButton QMessage::warning(QWidget* parent, //消息框的父窗口指针const QString& title, //消息框的标题栏const QString& text, //消息框的文字提示信息StandardButtons buttons = ok, //同Question消息框的注释内容StandardButton defaultButton = NoButton //同Question消息框的注释内容)

Critical消息框

StandardButton QMessage::critical(QWidget* parent, //消息框的父窗口指针const QString& title, //消息框的标题栏const QString& text, //消息框的文字提示信息StandardButtons buttons = ok, //同Question消息框的注释内容StandardButton defaultButton = NoButton //同Question消息框的注释内容)

About消息框

StandardButton QMessage::about(QWidget* parent, //消息框的父窗口指针const QString& title, //消息框的标题栏const QString& text //消息框的文字提示信息)

About Qt消息框

void QMessageBox::aboutQt(QWidget* parent, //消息框的父窗口指针const QString& title = QString() //消息框的标题栏)

2、使用示例

void MsgBoxDlg::showQuestionMsg(){label->setText(tr("Question Message Box"));switch (QMessageBox::question(this,tr("Question消息框"),tr("您现在已经修改完成,是否要接收程序?"),QMessageBox::Ok |QMessageBox::Cancel),QMessageBox::Ok){case QMessageBox::Ok:label->setText(tr("Question Button/OK"));break;case QMessageBox::Cancel:label->setText(tr("Question Button/Cancel"));break;default:break;}return;}void MsgBoxDlg::showInformationMsg(){label->setText(tr("Information Message Box"));QMessageBox::information(this,tr("Information 消息框"),tr("这是Information消息框测试,欢迎您!"));return;}void MsgBoxDlg::showWarningMsg(){label->setText(tr("Warning Message Box"));switch (QMessageBox::warning(this,tr("Warning 消息框"),tr("您修改的内容还未保存,是否要保存对文档的修改?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)){case QMessageBox::Save:label->setText(tr("Warning Button/Sava"));break;case QMessageBox::Discard:label->setText(tr("Warning Button/Discard"));break;case QMessageBox::Cancel:label->setText(tr("Warning Button/Cancel"));break;default:break;}return;}void MsgBoxDlg::showCriticalMsg(){label->setText(tr("Critical Message Box"));QMessageBox::critical(this,tr("Critical 消息框"),tr("这是Critical消息框测试!"));return;}void MsgBoxDlg::showAboutMsg(){label->setText(tr("About Message Box"));QMessageBox::about(this,tr("About 消息框"),tr("这是About消息框测试!"));return;}void MsgBoxDlg::showAboutQtMsg(){label->setText(tr("About Qt Message Box"));QMessageBox::aboutQt(this,tr("About Qt 消息框"));return;}

3、运行结果

六、自定义消息框

代码如下:

void Dialog::showCustomDlg(){label->setText(tr("Custom Message Box"));QMessageBox customMsgBox;customMsgBox.setWindowTitle(tr("用户自定义消息框"));QPushButton *yesBtn = customMsgBox.addButton(tr("Yes"),QMessageBox::ActionRole);QPushButton *noBtn = customMsgBox.addButton(tr("No"),QMessageBox::ActionRole);QPushButton *cancelBtn = customMsgBox.addButton(QMessageBox::Cancel);customMsgBox.setText(tr("这是一个用户自定义消息框"));customMsgBox.setIconPixmap(QPixmap("321.png"));customMsgBox.exec();if(customMsgBox.clickedButton()==yesBtn)label->setText(tr("Custom Message Box/Yes"));if(customMsgBox.clickedButton()==noBtn)label->setText(tr("Custom Message Box/No"));if(customMsgBox.clickedButton()==cancelBtn)label->setText(tr("Custom Message Box/Cancel"));}

运行结果:

【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】

点击这里:「链接」

标签: #对话框确定按钮看不到