您的位置:首页 > 编程语言 > Qt开发

一起看代码来玩玩QT之11 Dialog

2016-02-28 16:31 363 查看
MyDialog.h

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

class MyDialog : public QDialog
{
Q_OBJECT
public:
explicit MyDialog(QWidget *parent = 0);

QString _strDir;
void paintEvent(QPaintEvent *);

signals:

public slots:
void slotButtonClick();

};

#endif // MYDIALOG_H


MyDialog.cpp

#include "MyDialog.h"
#include <QPushButton>
#include <QDebug>
#include <QFileDialog>
#include <QFileInfo>

#include <QColorDialog>
#include <QFontDialog>
#include <QMessageBox>
#include <QPainter>
MyDialog::MyDialog(QWidget *parent) :
QDialog(parent)
{
QPushButton* button = new QPushButton("Click me", this);
connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClick()));
}

void MyDialog::slotButtonClick()
{
#if 0
QDialog* dlg=new QDialog;
int ret;
QPushButton* button = new QPushButton(dlg);
connect(button, SIGNAL(clicked()), dlg, SLOT(reject()));

ret = dlg->exec();  // 在模块对话框中,exec有自己的消息循环,并且把app的消息循环接管了
// 如果Dialog是通过exec来显示,那么可以通过accept或者reject来关闭窗口
// 如果Dialog是通过show来显示,那么可以通过close来关闭窗口,这个和QWidget一样的

// 有许多特殊的dailog:文件选择,MessageBox,颜色选择,字体选择,打印预览,打印

if(ret == QDialog::Accepted)
{
qDebug() << "accepted";
}
if(ret == QDialog::Rejected)
{
qDebug() << "rejected";
}
#endif

#if 0
QString strFilename = QFileDialog::getSaveFileName(NULL,
"Select file for save",
_strDir,
"pic file (*.png *.jpg)");
#endif
#if 0
QString strFilename = QFileDialog::getOpenFileName(NULL,
"Select file for open",
_strDir,
"pic file (*.png *.jpg)");
#endif
#if 0
QString strFilename = QFileDialog::getExistingDirectory();

if(strFilename.isEmpty())
{
qDebug() << "select none";
return;
}

qDebug() << strFilename;
QFileInfo fileInfo(strFilename);
_strDir = fileInfo.filePath();  //制造默认目录
#endif
// do something for io ...

#if 0
QColorDialog color;
color.exec();
QColor c = color.selectedColor();
#endif

#if 0
QFontDialog fontDialog;
fontDialog.exec();
QFont font = fontDialog.selectedFont();
#endif

int ret = QMessageBox::question(this, "????", "realy do .......",
QMessageBox::Yes| QMessageBox::No|
QMessageBox::YesAll| QMessageBox::NoAll);
if(ret == QMessageBox::Yes)
{
qDebug() << "user select yes";
}
if(ret == QMessageBox::No)
{
qDebug() << "user select no";
}

}
void MyDialog::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawLine(QLine(0, 0, 200, 200));
}

#include <QApplication>

int main(int argc, char* argv[])
{
QApplication app(argc, argv);

MyDialog dlg;
dlg.show();

return app.exec();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: