QT中的各种对话框
Qt 各种 对话框
2023-09-14 08:59:44 时间
界面效果图如下,大家可以用代码自己操作
diglog.h
#ifndef DIALOG_H #define DIALOG_H #include QDialog QT_BEGIN_NAMESPACE class QCheckBox; class QLabel; class QErrorMessage; QT_END_NAMESPACE class Dialog : public QDialog Q_OBJECT public: Dialog(QWidget *parent = 0); private slots: void setInteger(); void setDouble(); void setItem(); void setText(); void setColor(); void setFont(); void setExistingDirectory(); void setOpenFileName(); void setOpenFileNames(); void setSaveFileName(); void criticalMessage(); void informationMessage(); void questionMessage(); void warningMessage(); void errorMessage(); private: QCheckBox *native; QLabel *integerLabel; QLabel *doubleLabel; QLabel *itemLabel; QLabel *textLabel; QLabel *colorLabel; QLabel *fontLabel; QLabel *directoryLabel; QLabel *openFileNameLabel; QLabel *openFileNamesLabel; QLabel *saveFileNameLabel; QLabel *criticalLabel; QLabel *informationLabel; QLabel *questionLabel; QLabel *warningLabel; QLabel *errorLabel; QErrorMessage *errorMessageDialog; QString openFilesPath; #endif
dialog.cpp
#include QtGui #include "dialog.h" #define MESSAGE \ Dialog::tr(" p Message boxes have a caption, a text, " \ "and any number of buttons, each with standard or custom texts." \ " p Click a button to close the message box. Pressing the Esc button " \ "will activate the detected escape button (if any).") Dialog::Dialog(QWidget *parent) : QDialog(parent) errorMessageDialog = new QErrorMessage(this); int frameStyle = QFrame::Sunken | QFrame::Panel; integerLabel = new QLabel; integerLabel- setFrameStyle(frameStyle); QPushButton *integerButton = new QPushButton(tr("QInputDialog::get Int()")); doubleLabel = new QLabel; doubleLabel- setFrameStyle(frameStyle); QPushButton *doubleButton = new QPushButton(tr("QInputDialog::get Double()")); itemLabel = new QLabel; itemLabel- setFrameStyle(frameStyle); QPushButton *itemButton = new QPushButton(tr("QInputDialog::getIte m()")); textLabel = new QLabel; textLabel- setFrameStyle(frameStyle); QPushButton *textButton = new QPushButton(tr("QInputDialog::get Text()")); colorLabel = new QLabel; colorLabel- setFrameStyle(frameStyle); QPushButton *colorButton = new QPushButton(tr("QColorDialog::get Color()")); fontLabel = new QLabel; fontLabel- setFrameStyle(frameStyle); QPushButton *fontButton = new QPushButton(tr("QFontDialog::get Font()")); directoryLabel = new QLabel; directoryLabel- setFrameStyle(frameStyle); QPushButton *directoryButton = new QPushButton(tr("QFileDialog::getE xistingDirectory()")); openFileNameLabel = new QLabel; openFileNameLabel- setFrameStyle(frameStyle); QPushButton *openFileNameButton = new QPushButton(tr("QFileDialog::get OpenFileName()")); openFileNamesLabel = new QLabel; openFileNamesLabel- setFrameStyle(frameStyle); QPushButton *openFileNamesButton = new QPushButton(tr("QFileDialog:: getOpenFileNames()")); saveFileNameLabel = new QLabel; saveFileNameLabel- setFrameStyle(frameStyle); QPushButton *saveFileNameButton = new QPushButton(tr("QFileDialog::get SaveFileName()")); criticalLabel = new QLabel; criticalLabel- setFrameStyle(frameStyle); QPushButton *criticalButton = new QPushButton(tr("QMessageBox::critica l()")); informationLabel = new QLabel; informationLabel- setFrameStyle(frameStyle); QPushButton *informationButton = new QPushButton(tr("QMessageBox::i nformation()")); questionLabel = new QLabel; questionLabel- setFrameStyle(frameStyle); QPushButton *questionButton = new QPushButton(tr("QMessageBox:: question()")); warningLabel = new QLabel; warningLabel- setFrameStyle(frameStyle); QPushButton *warningButton = new QPushButton(tr("QMessageBox:: warning()")); errorLabel = new QLabel; errorLabel- setFrameStyle(frameStyle); QPushButton *errorButton = new QPushButton(tr("QErrorMessage::showM essage()")); connect(integerButton, SIGNAL(clicked()), this, SLOT(setInteger())); connect(doubleButton, SIGNAL(clicked()), this, SLOT(setDouble())); connect(itemButton, SIGNAL(clicked()), this, SLOT(setItem())); connect(textButton, SIGNAL(clicked()), this, SLOT(setText())); connect(colorButton, SIGNAL(clicked()), this, SLOT(setColor())); connect(fontButton, SIGNAL(clicked()), this, SLOT(setFont())); connect(directoryButton, SIGNAL(clicked()), this, SLOT(setExistingDirectory())); connect(openFileNameButton, SIGNAL(clicked()), this, SLOT(setOpenFileName())); connect(openFileNamesButton, SIGNAL(clicked()), this, SLOT(setOpenFileNames())); connect(saveFileNameButton, SIGNAL(clicked()), this, SLOT(setSaveFileName())); connect(criticalButton, SIGNAL(clicked()), this, SLOT(criticalMessage())); connect(informationButton, SIGNAL(clicked()), this, SLOT(informationMessage())); connect(questionButton, SIGNAL(clicked()), this, SLOT(questionMessage())); connect(warningButton, SIGNAL(clicked()), this, SLOT(warningMessage())); connect(errorButton, SIGNAL(clicked()), this, SLOT(errorMessage())); native = new QCheckBox(this); native- setText("Use native file dialog."); native- setChecked(true); QGridLayout *layout = new QGridLayout; layout- setColumnStretch(1, 1); layout- setColumnMinimumWidth(1, 250); layout- addWidget(integerButton, 0, 0); layout- addWidget(integerLabel, 0, 1); layout- addWidget(doubleButton, 1, 0); layout- addWidget(doubleLabel, 1, 1); layout- addWidget(itemButton, 2, 0); layout- addWidget(itemLabel, 2, 1); layout- addWidget(textButton, 3, 0); layout- addWidget(textLabel, 3, 1); layout- addWidget(colorButton, 4, 0); layout- addWidget(colorLabel, 4, 1); layout- addWidget(fontButton, 5, 0); layout- addWidget(fontLabel, 5, 1); layout- addWidget(directoryButton, 6, 0); layout- addWidget(directoryLabel, 6, 1); layout- addWidget(openFileNameButton, 7, 0); layout- addWidget(openFileNameLabel, 7, 1); layout- addWidget(openFileNamesButton, 8, 0); layout- addWidget(openFileNamesLabel, 8, 1); layout- addWidget(saveFileNameButton, 9, 0); layout- addWidget(saveFileNameLabel, 9, 1); layout- addWidget(criticalButton, 10, 0); layout- addWidget(criticalLabel, 10, 1); layout- addWidget(informationButton, 11, 0); layout- addWidget(informationLabel, 11, 1); layout- addWidget(questionButton, 12, 0); layout- addWidget(questionLabel, 12, 1); layout- addWidget(warningButton, 13, 0); layout- addWidget(warningLabel, 13, 1); layout- addWidget(errorButton, 14, 0); layout- addWidget(errorLabel, 14, 1); layout- addWidget(native, 15, 0); setLayout(layout); setWindowTitle(tr("Standard Dialogs")); void Dialog::setInteger() //! [0] bool ok; int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"), tr("Percentage:"), 25, 0, 100, 1, ok); if (ok) integerLabel- setText(tr("%1%").arg(i)); //! [0] void Dialog::setDouble() //! [1] bool ok; double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"), tr("Amount:"), 37.56, -10000, 10000, 2, ok); if (ok) doubleLabel- setText(QString("$%1").arg(d)); //! [1] void Dialog::setItem() //! [2] QStringList items; items tr("Spring") tr("Summer") tr("Fall") tr("Winter"); bool ok; QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"), tr("Season:"), items, 0, false, ok); if (ok !item.isEmpty()) itemLabel- setText(item); //! [2] void Dialog::setText() //! [3] bool ok; QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"), tr("User name:"), QLineEdit::Normal, QDir::home().dirName(), ok); if (ok !text.isEmpty()) textLabel- setText(text); //! [3] void Dialog::setColor() QColor color; if (native- isChecked()) color = QColorDialog::getColor(Qt::green, this); else color = QColorDialog::getColor(Qt::green, this, "Select Color", QColorDialog::DontUseNativeDialog); if (color.isValid()) { colorLabel- setText(color.name()); colorLabel- setPalette(QPalette(color)); colorLabel- setAutoFillBackground(true); void Dialog::setFont() bool ok; QFont font = QFontDialog::getFont( ok, QFont(fontLabel- text()), this); if (ok) { fontLabel- setText(font.key()); fontLabel- setFont(font); void Dialog::setExistingDirectory() QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly; if (!native- isChecked()) options |= QFileDialog::DontUseNativeDialog; QString directory = QFileDialog::getExistingDirectory(this, tr("QFileDialog::getExistingDirectory()"), directoryLabel- text(), options); if (!directory.isEmpty()) directoryLabel- setText(directory); void Dialog::setOpenFileName() QFileDialog::Options options; if (!native- isChecked()) options |= QFileDialog::DontUseNativeDialog; QString selectedFilter; QString fileName = QFileDialog::getOpenFileName(this, tr("QFileDialog::getOpenFileName()"), openFileNameLabel- text(), tr("All Files (*);;Text Files (*.txt)"), selectedFilter, options); if (!fileName.isEmpty()) openFileNameLabel- setText(fileName); void Dialog::setOpenFileNames() QFileDialog::Options options; if (!native- isChecked()) options |= QFileDialog::DontUseNativeDialog; QString selectedFilter; QStringList files = QFileDialog::getOpenFileNames( this, tr("QFileDialog::getOpenFileNames()"), openFilesPath, tr("All Files (*);;Text Files (*.txt)"), selectedFilter, options); if (files.count()) { openFilesPath = files[0]; openFileNamesLabel- setText(QString("[%1]").arg(files.join(", "))); void Dialog::setSaveFileName() QFileDialog::Options options; if (!native- isChecked()) options |= QFileDialog::DontUseNativeDialog; QString selectedFilter; QString fileName = QFileDialog::getSaveFileName(this, tr("QFileDialog::getSaveFileName()"), saveFileNameLabel- text(), tr("All Files (*);;Text Files (*.txt)"), selectedFilter, options); if (!fileName.isEmpty()) saveFileNameLabel- setText(fileName); void Dialog::criticalMessage() QMessageBox::StandardButton reply; reply = QMessageBox::critical(this, tr("QMessageBox::critical()"), MESSAGE, QMessageBox::Abort | QMessageBox::Retry | QMessageBox::Ignore); if (reply == QMessageBox::Abort) criticalLabel- setText(tr("Abort")); else if (reply == QMessageBox::Retry) criticalLabel- setText(tr("Retry")); else criticalLabel- setText(tr("Ignore")); void Dialog::informationMessage() QMessageBox::StandardButton reply; reply = QMessageBox::information(this, tr("QMessageBox::information()"), MESSAGE); if (reply == QMessageBox::Ok) informationLabel- setText(tr("OK")); else informationLabel- setText(tr("Escape")); void Dialog::questionMessage() QMessageBox::StandardButton reply; reply = QMessageBox::question(this, tr("QMessageBox::question()"), MESSAGE, QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); if (reply == QMessageBox::Yes) questionLabel- setText(tr("Yes")); else if (reply == QMessageBox::No) questionLabel- setText(tr("No")); else questionLabel- setText(tr("Cancel")); void Dialog::warningMessage() QMessageBox msgBox(QMessageBox::Warning, tr("QMessageBox::warning()"), MESSAGE, 0, this); msgBox.addButton(tr("Save Again"), QMessageBox::AcceptRole); msgBox.addButton(tr(" Continue"), QMessageBox::RejectRole); if (msgBox.exec() == QMessageBox::AcceptRole) warningLabel- setText(tr("Save Again")); else warningLabel- setText(tr("Continue")); void Dialog::errorMessage() errorMessageDialog- showMessage( tr("This dialog shows and remembers error messages. " "If the checkbox is checked (as it is by default), " "the shown message will be shown again, " "but if the user unchecks the box the message " "will not appear again if QErrorMessage::showMessage() " "is called with the same message.")); errorLabel- setText(tr("If the box is unchecked, the message " "wont appear again."));
main.cpp
#include QApplication #include QTranslator #include QLocale #include QLibraryInfo #include "dialog.h" int main(int argc, char *argv[]) QApplication app(argc, argv); QString translatorFileName = QLatin1String("qt_"); translatorFileName += QLocale::system().name(); QTranslator *translator = new QTranslator( app); if (translator- load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) app.installTranslator(translator); Dialog dialog; return dialog.exec(); }
C/C++ Qt 标准Dialog对话框组件应用 在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDialog 这几种,这里我将总结本人在开发过程中常用到的标准对话框的使用技巧。
C/C++ Qt 自定义Dialog对话框组件应用 在上一篇博文 `《C/C++ Qt 标准Dialog对话框组件应用》` 中我给大家演示了如何使用Qt中内置的标准对话框组件实现基本的数据输入功能。
相关文章
- Qt-qt creator 运行 出现 "can not open .... jom for write 解决方案
- QT-Qt图片按钮类
- Qt按钮自定义特效buttonEffects
- QT-Qt显示GIF图片
- s3c2410上搭建QT/Embedded4.8.5开发环境(四)--安装intel-x86 X11平台qt库qt-everywhere-opensource-src-4.8.5
- Qt音视频开发26-监控画面各种图形绘制设计
- Qt编写自定义控件13-多态进度条
- Qt编写音频播放示例(带音频曲线/振幅/传输/录制等)
- Qt编写安防视频监控系统2-视频播放
- Qt编写可视化大屏电子看板系统1-布局方案
- Qt系列文章025-使用QMediaPlayer开发播放器
- Qt 关于QT_BEGIN_NAMESPACE宏的作用
- Qt容器与常用算法
- Qt串口通信接收数据不完整_qt串口接收数据
- 【Qt】解决 “ubuntu 中的 qt 编辑器光标变成小黑块”
- 9、QT基础——Qt消息机制和事件
- Qt窗口永久置顶
- QT获取IP地址
- Qt中使用vlc-qt处理音视频
- vs2015中无法设置Qt版本,qt project setting 是灰色,Qt无法编译ui文件
- Qt creator 编译错误 :cannot find file .pro qt
- 我写的一个 Qt 显示图片的控件
- Qt学习一门:直接使用QT具
- Qt编写可视化大屏电子看板系统29-模块7品质管理