Qt中的标准对话框
Posted 99度的水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt中的标准对话框相关的知识,希望对你有一定的参考价值。
1. Qt为开发者提供了一些可复用的对话框类型,如QMessageBox,QFileDialog,QPrintDialog, QColorDialog, QInputDialog, QProgressDialog等,他们全部继承与QDialog类。
2. Qt中的对话框遵循相同的使用方式:
DialogType dlg(this); /* 1. 定义对话框对象 */ dlg.setPropertyxxx(value); /* 2. 设置对话框属性 */ if(dlg.exec() == DialogType::Value) { Type v = dlg.getDialogValue(); /* 3. 获取对话框数据 */ ... /* 4. 处理对话框数据 */ }
3. 简单实例
Widget.h:
#ifndef WIDGET_H #define WIDGET_H #include <QtGui/QWidget> #include <QPushButton> class Widget : public QWidget { Q_OBJECT private: QPushButton SimpleMsgBtn; QPushButton CustomMsgBtn; QPushButton OpenFileBtn; QPushButton SaveFileBtn; QPushButton QColorBtn; QPushButton InputBtn; QPushButton QFontBtn; QPushButton QProgressBtn; QPushButton QPrintBtn; private slots: void SmipleMsgBtn_Clicked(); void CustomMsgBtn_Clicked(); void OpenFileBtn_Clicked(); void SaveFileBtn_Clicked(); void QColorBtn_Clicked(); void InputBtn_Clicked(); void QFontBtn_Clicked(); void QProgressBtn_Clicked(); void QPrintBtn_Clicked(); public: Widget(QWidget *parent = 0); ~Widget(); }; #endif // WIDGET_H
Widget.cpp:
#include <QDebug> #include <QMessageBox> #include <QFileDialog> #include <QColorDialog> #include <QInputDialog> #include <QFontDialog> #include <QProgressDialog> #include <QPrintDialog> #include <QTextDocument> #include "Widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this), QColorBtn(this), InputBtn(this), QFontBtn(this), QProgressBtn(this), QPrintBtn(this) { SimpleMsgBtn.setText("Simple Message Dialog"); SimpleMsgBtn.move(20, 20); SimpleMsgBtn.resize(160, 20); CustomMsgBtn.setText("Custom Message Dialog"); CustomMsgBtn.move(20, 60); CustomMsgBtn.resize(160, 20); OpenFileBtn.setText("Open File Message Dialog"); OpenFileBtn.move(20, 100); OpenFileBtn.resize(160, 20); SaveFileBtn.setText("Save File Message Dialog"); SaveFileBtn.move(20, 140); SaveFileBtn.resize(160, 20); QColorBtn.setText("QColor Dialog"); QColorBtn.move(20, 180); QColorBtn.resize(160, 20); InputBtn.setText("Input Dialog"); InputBtn.move(20, 220); InputBtn.resize(160, 20); QFontBtn.setText("QFont Dialog"); QFontBtn.move(20, 260); QFontBtn.resize(160, 20); QProgressBtn.setText("QProgress Dialog"); QProgressBtn.move(20, 300); QProgressBtn.resize(160, 20); QPrintBtn.setText("QPrint Dialog"); QPrintBtn.move(20, 340); QPrintBtn.resize(160, 20); resize(200, 400); setFixedSize(200, 400); connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SmipleMsgBtn_Clicked())); connect(&CustomMsgBtn, SIGNAL(clicked()), this, SLOT(CustomMsgBtn_Clicked())); connect(&OpenFileBtn, SIGNAL(clicked()), this, SLOT(OpenFileBtn_Clicked())); connect(&SaveFileBtn, SIGNAL(clicked()), this, SLOT(SaveFileBtn_Clicked())); connect(&QColorBtn, SIGNAL(clicked()), this, SLOT(QColorBtn_Clicked())); connect(&InputBtn, SIGNAL(clicked()), this, SLOT(InputBtn_Clicked())); connect(&QFontBtn, SIGNAL(clicked()), this, SLOT(QFontBtn_Clicked())); connect(&QProgressBtn, SIGNAL(clicked()), this, SLOT(QProgressBtn_Clicked())); connect(&QPrintBtn, SIGNAL(clicked()), this, SLOT(QPrintBtn_Clicked())); } void Widget::SmipleMsgBtn_Clicked() { qDebug() << "SmipleMsgBtn_Clicked start"; QMessageBox msg(this); msg.setText("This is a message dialog"); msg.exec(); qDebug() << "SmipleMsgBtn_Clicked end"; } void Widget::CustomMsgBtn_Clicked() { qDebug() << "CustomMsgBtn_Clicked start"; QMessageBox msg(this); msg.setWindowTitle("Window Tile"); msg.setText("This is a message dialog"); msg.setIcon(QMessageBox::Information); msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll); qDebug() << msg.standardButtons(); int r = msg.exec(); if(r == QMessageBox::Ok) { qDebug() << "OK"; } qDebug() << "CustomMsgBtn_Clicked end"; } void Widget::OpenFileBtn_Clicked() { qDebug() << "OpenFileBtn_Clicked start"; QFileDialog dlg(this); dlg.setAcceptMode(QFileDialog::AcceptOpen); dlg.setFilter("Text(*.txt)"); dlg.setFileMode(QFileDialog::ExistingFiles); if(dlg.exec() == QFileDialog::Accepted) { QStringList fs = dlg.selectedFiles(); qDebug() << fs; } qDebug() << "OpenFileBtn_Clicked end"; } void Widget::SaveFileBtn_Clicked() { qDebug() << "SaveFileBtn_Clicked start"; QFileDialog dlg(this); dlg.setAcceptMode(QFileDialog::AcceptSave); dlg.setFilter("Text(*.txt)"); if(dlg.exec() == QFileDialog::Accepted) { QStringList fs = dlg.selectedFiles(); qDebug() << fs; } qDebug() << "SaveFileBtn_Clicked end"; } void Widget::QColorBtn_Clicked() { qDebug() << "QColorBtn_Clicked start"; QColorDialog dlg(this); dlg.setWindowTitle("Color Editer"); dlg.setCurrentColor(QColor(100, 111, 240)); if(dlg.exec() == QColorDialog::Accepted) { QColor color = dlg.selectedColor(); qDebug() << color; qDebug() << color.red(); qDebug() << color.green(); qDebug() << color.blue(); qDebug() << color.hsvHue(); qDebug() << color.saturation(); qDebug() << color.value(); } qDebug() << "QColorBtn_Clicked end"; } void Widget::InputBtn_Clicked() { qDebug() << "InputBtn_Clicked start"; QInputDialog dlg(this); dlg.setWindowTitle("Input..."); dlg.setLabelText("Please input a string"); dlg.setInputMode(QInputDialog::TextInput); if(dlg.exec() == QInputDialog::Accepted) { qDebug() << dlg.textValue(); } qDebug() << "InputBtn_Clicked end"; } void Widget::QFontBtn_Clicked() { qDebug() << "QFontBtn_Clicked start"; QFontDialog dlg(this); dlg.setWindowTitle("Font Editor"); dlg.setCurrentFont(QFont("Arial", 10, QFont::Normal)); if(dlg.exec() == QFontDialog::Accepted) { qDebug() << dlg.selectedFont(); } qDebug() << "QFontBtn_Clicked end"; } void Widget::QProgressBtn_Clicked() { qDebug() << "QProgressBtn_Clicked start"; QProgressDialog dlg(this); dlg.setWindowTitle("Updating..."); dlg.setLabelText("Donwloading from server..."); dlg.setMinimum(0); dlg.setMaximum(100); dlg.setValue(50); //Create a new thread, download and updat value dlg.exec(); qDebug() << "QProgressBtn_Clicked end"; } void Widget::QPrintBtn_Clicked() { qDebug() << "QPrintBtn_Clicked start"; QPrintDialog dlg(this); if(dlg.exec() == QPrintDialog::Accepted) { QPrinter* p = dlg.printer(); QTextDocument td; td.setPlainText("Print Object Test"); td.print(p); qDebug() << "QPrintDialog::Accepted"; } qDebug() << "QPrintBtn_Clicked end"; } Widget::~Widget() { }
以上是关于Qt中的标准对话框的主要内容,如果未能解决你的问题,请参考以下文章