运行图如下:
文件结构如下:
代码如下:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QAction>
#include <QMenuBar>
#include <QFontDialog>
#include <QMenu>
#include <QCoreApplication>
#include <QList>
#include <QColor>
#include <QDebug>
#include <QColorDialog>
#include <QFileDialog>
#include <QProgressDialog>
#include <QInputDialog>
#include <QMessageBox>
#include <QProgressDialog>
#include <QWizard>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void colorTriggered();
void fileTriggered();
void fontTriggered();
void inputTriggered();
void msgTriggered();
void progressTriggered();
void errMsgTriggered();
void wizardTriggered();
private:
QMenuBar *m_menubar;
QMenu *m_dialogMenu;
QAction m_color;
QAction m_file;
QAction m_font;
QAction m_input;
QAction m_msg;
QAction m_progress;
QAction m_errMsg;
QAction m_wizard;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
m_menubar=this->menuBar();
m_dialogMenu=new QMenu(tr("对话框"));
m_color.setText(tr("颜色对话框"));
m_file.setText(tr("文件对话框"));
m_font.setText(tr("字体对话框"));
m_input.setText(tr("输入对话框"));
m_msg.setText(tr("消息对话框"));
m_progress.setText(tr("进度对话框"));
m_errMsg.setText(tr("错误信息对话框"));
m_wizard.setText(tr("向导对话框"));
m_dialogMenu->addAction(&m_color);
m_dialogMenu->addAction(&m_file);
m_dialogMenu->addAction(&m_font);
m_dialogMenu->addAction(&m_input);
m_dialogMenu->addAction(&m_msg);
m_dialogMenu->addAction(&m_progress);
m_dialogMenu->addAction(&m_errMsg);
m_dialogMenu->addAction(&m_wizard);
m_menubar->addMenu(m_dialogMenu);
connect(&m_color,SIGNAL(triggered(bool)),this,SLOT(colorTriggered()));
connect(&m_file,SIGNAL(triggered(bool)),this,SLOT(fileTriggered()));
connect(&m_font,SIGNAL(triggered(bool)),this,SLOT(fontTriggered()));
connect(&m_input,SIGNAL(triggered(bool)),this,SLOT(inputTriggered()));
connect(&m_msg,SIGNAL(triggered(bool)),this,SLOT(msgTriggered()));
connect(&m_progress,SIGNAL(triggered(bool)),this,SLOT(progressTriggered()));
connect(&m_errMsg,SIGNAL(triggered(bool)),this,SLOT(errMsgTriggered()));
connect(&m_wizard,SIGNAL(triggered(bool)),this,SLOT(wizardTriggered()));
}
void MainWindow::colorTriggered(){
QColor color=QColorDialog::getColor(Qt::red,this,tr("颜色对话框"));
qDebug()<<"color:"<<color;
}
void MainWindow::fileTriggered(){
QString fileName=QFileDialog::getOpenFileName(this,tr("文件对话框"),"D:",tr("图片文件(*png *jpg)"));
qDebug()<<"fileName:"<<fileName;
}
void MainWindow::fontTriggered(){
bool ok;
QFont font=QFontDialog::getFont(&ok,this);
qDebug()<<font;
}
void MainWindow::inputTriggered(){
bool ok;
QString text=QInputDialog::getText(this,tr("输入对话框"),tr("输入内容"),QLineEdit::Normal,tr("输入的内容"),&ok);
qDebug()<<text;
}
void MainWindow::msgTriggered(){
QMessageBox::information(this,tr("消息对话框"),tr("消息提示"));
}
void MainWindow::progressTriggered(){
QProgressDialog pd(tr("进度"),tr("取消"),0,50000,this);
pd.setWindowTitle("进度对话框");
pd.setWindowModality(Qt::WindowModal);
pd.show();
for(int i=0;i<50000;i++){
pd.setValue(i);
QCoreApplication::processEvents();
if(pd.wasCanceled())break;
}
}
void MainWindow::errMsgTriggered(){
QMessageBox::critical(this,tr("错误信息对话框"),tr("错误信息提示"));
}
void MainWindow::wizardTriggered(){
QWizard wizard;
wizard.setWindowTitle(tr("向导对话框"));
wizard.exec();
}
MainWindow::~MainWindow()
{
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}