18、

18、

19、qt中的标准对话框

qt为开发者提供了一些可复用的对话框类型。

qt提供的可复用对话框全部继承自QDialog类。

qt中的标准对话框遵循相同的使用方式:

定义对话框对象

DialogType dlg(this);

设置对话框属性

dlg.setPropertyxxx(value);

if(dlg.exec())==DialogTyupe::value)

{//获取对话框数据

Type v=dlg.getDialogValue();

//处理对话框数据

}

消息对话框:消息对话框是应用程序中最常见的界面元素:

消息对话框主要用于:为用户提示重要信息,强制用户进行操作选择。

消息对话框的使用方式:

//构造消息对话框对象

QMessageBox msg(this);

//设置消息对话框的相关属性。

msg.setText("this is a ");

msg.setWindowTitle("title");

msg.setIcon(QMessageBox::Information):

msg.setStandardBuuttons(QMessageBox::OK|QMessageBox::Cancel |QMessageBox::YesToALL);

文件对话框:常用于:

Open Mode:应用程序中需要用户打开一个外部的文件

Save Mode:应用程序中需要将当前内容存储于用户指定的外部文件中。

使用方式:

QFileDialog fd(this);

//fd.setAcceptMode(QFileDialog::AcceptOpen);

fd.setFileMode(QFileDialog::ExistingFile);//单个文件,多个加s

文件类型过滤器:setFilter("Text(*.*)")

在文件对话框中可以通过文件后缀定义过滤器

过滤器定义规则:显示名(*.后缀1 *.后缀2...*.后缀N)

例:“Image(*.png *.xpm *.jpg)”

"Text(*.txt)"

“All(*.*)”

QMessageBox用于提示重要的程序信息,QFileDialog用于获取系统中的文件路径。

20、qt中提供了预定义的颜色对话框QColorDialog类

QColorDialog类用于提供指定颜色的对话框部件。

颜色对话框的使用方式:

//构造颜色对话框对象

QColorDialog dlg(this);

//设置颜色对话框的相关属性

dlg.setWindowTetle("Color Editor");

dlg.setCurrentColor(Qt::ret);//初始颜色

if(dlg.exec()==QColorDialog::Accepted)

{

qDebug()<<dlg.selectedColor();

}

Qt中的QColor类用于在程序中表示颜色的概念,QColor类同时支持多种颜色表示方式:

RGB:以红、绿、蓝为基准的三色模型。

HSV:以色调,饱和度、明度为基准的六角椎体模型。

CMYK:以天蓝,品红,黄色,黑为基准的全彩印刷色彩模型。

输入对话框:qt中提供了预定义的输入对话框QInputDialog类

QInputDialog类用于需要临时进行数据输入的场合。使用方式:

//构造输入对话框对象

QInputDialog dlg(this);

//设置输入对话框的相关属性

dlg.setWindowTitle("Input...")'

dlg.setLabelTest("please enter a interger:");

dlg.setInputMode(QInputDialog::IntInput);//输入整型数

if(dlg.exec()==QInputDialog::Accepted)

{qDebug<<dlg.intValue();

}

输入对话框的输入模式:

QInputDialog::TextInput -输入文本字符串

QInputDialog::IntInput-输入整型数

QInputDialog::Double Inout-输入浮点数

#ifndef _WIDGET_H_
#define _WIDGET_H_
#include <QtGui/QWidget>
#include <QPushButton>
class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton ColorDialogBtn;
    QPushButton InputDialogBtn;
private slots:
    void ColorDialogBtn_Clicked();
    void InputDialogBtn_Clicked();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif

#include "Widget.h"
#include <QDebug>
#include <QColorDialog>
#include <QInputDialog>
Widget::Widget(QWidget *parent) : QWidget(parent),
    ColorDialogBtn(this), InputDialogBtn(this)
{
    ColorDialogBtn.setText("Color Dialog");
    ColorDialogBtn.move(20, 20);
    ColorDialogBtn.resize(160, 30);
    InputDialogBtn.setText("Input Dialog");
    InputDialogBtn.move(20, 70);
    InputDialogBtn.resize(160, 30);
    resize(200, 120);
    setFixedSize(200, 120);
    connect(&ColorDialogBtn, SIGNAL(clicked()), this, SLOT(ColorDialogBtn_Clicked()));
    connect(&InputDialogBtn, SIGNAL(clicked()), this, SLOT(InputDialogBtn_Clicked()));
}

void Widget::ColorDialogBtn_Clicked()
{
    QColorDialog dlg(this);
    dlg.setWindowTitle("Color Editor");
    dlg.setCurrentColor(QColor(100, 111, 222));//直接调用构造函数生成临时对象
    if( dlg.exec() == QColorDialog::Accepted )
    {
        QColor color = dlg.selectedColor();
        qDebug() << color;
        qDebug() << color.red();
        qDebug() << color.green();
        qDebug() << color.blue();
        qDebug() << color.hue();
        qDebug() << color.saturation();
        qDebug() << color.value();
    }
}

void Widget::InputDialogBtn_Clicked()
{
    QInputDialog dlg(this);
    dlg.setWindowTitle("Input Test");
    dlg.setLabelText("Please input an integer:");

    dlg.setInputMode(QInputDialog::TextInput);

    //dlg.setIntMinimum(0); //最小最大

    //dlg.setIntMaximum(255);

    if( dlg.exec() == QInputDialog::Accepted )
    {
        qDebug() << dlg.textValue();//intValue
    }
}

Widget::~Widget()
{
  

}

#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();

}

小结:QColorDialog类用于提供指定颜色的对话框部件。

QColor类用来在程序中表示颜色的概念。

QInputDialog类用于需要临时进行数据输入的场合。

21、标准对话框(下)

qt中提供了预定义的字体对话框QFontDialog类。

QFontDialog类用于提供选择字体的对话框部件。

字体对话框的使用方式:

//构造字体对话框对象

QFontDialog dlg(this);

//设置字体对话框的相关属性

dlg.setWindowTitle("Font Editor");

dlg.setCurrentFont(QFont("Coutier New",10,QFont::Bold));//初始字体

if(dlg.exec()==QFontDialog::Accepted)

{qDebug()<<dlg.selectedFont();

}

Qt中提供了预定义的进度对话框QProgressDialog类

QProgressDialog类用于显示进度信息

QProgressDialog类用于需要用户等待的场合。使用方式:

//构造进度对话框对象

QProgressDialog dlg(this);

//设置进度对话框的相关属性

dlg.setWindowTitle("Updating...");

dlg.setLabelText("Downloading from server..");

dlg.setMinimum(0);//设置最小进度值

dlg.setMaximum(1000);//设置最大进度值

dlg.exec();

打印对话框:

Qt中提供了预定义的打印对话框QPringtDialog类,QPrintDialog类用于设置打印相关的参数信息。使用方式:

//构造打印对话框对象

QPrintDialog dlg(this);

//设置打印对话框的相关属性

dlg.setWindowTitle("print Dialog");

if(dlg.exec()==QprintDialog::Accepted)

{Qprinter* p=dlg.printer();

//use printer object to print data

}

qt中的QPrinter类是打印设备及其参数的封装,QPrinter类封装了系统中打印设备的驱动接口,QPrinter以相同方式使用系统中的不同打印设备。

#ifndef _WIDGET_H_
#define _WIDGET_H_
#include <QtGui/QWidget>
#include <QPushButton>
class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton FontDialogBtn;
    QPushButton ProgressDialogBtn;
    QPushButton PrintDialogBtn;
private slots:
    void FontDialogBtn_Clicked();
    void PrintDialogBtn_Clicked();
    void ProgressDialogBtn_Clicked();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif

#include "Widget.h"
#include <QDebug>
#include <QPrinter>
#include <QTextDocument>
#include <QPrintDialog>
#include <QProgressDialog>
#include <QFontDialog>
Widget::Widget(QWidget *parent) : QWidget(parent),
    FontDialogBtn(this), ProgressDialogBtn(this), PrintDialogBtn(this)
{
    FontDialogBtn.setText("Font Dialog");
    FontDialogBtn.move(20, 20);
    FontDialogBtn.resize(160, 30);
    ProgressDialogBtn.setText("Progress Dialog");
    ProgressDialogBtn.move(20, 70);
    ProgressDialogBtn.resize(160, 30);
    PrintDialogBtn.setText("Print Dialog");
    PrintDialogBtn.move(20, 120);
    PrintDialogBtn.resize(160, 30);
    resize(200, 170);
    setFixedSize(200, 170);
    connect(&FontDialogBtn, SIGNAL(clicked()), this, SLOT(FontDialogBtn_Clicked()));
    connect(&ProgressDialogBtn, SIGNAL(clicked()), this, SLOT(ProgressDialogBtn_Clicked()));
    connect(&PrintDialogBtn, SIGNAL(clicked()), this, SLOT(PrintDialogBtn_Clicked()));
}

void Widget::FontDialogBtn_Clicked()
{
    QFontDialog dlg(this);
    dlg.setWindowTitle("Font Dialog Test");
    dlg.setCurrentFont(QFont("Courier New", 10, QFont::Bold));
    if( dlg.exec() == QFontDialog::Accepted )
    {
        qDebug() << dlg.selectedFont();
    }
}

void Widget::ProgressDialogBtn_Clicked()
{
    QProgressDialog dlg(this);
    dlg.setWindowTitle("Updating...");
    dlg.setLabelText("Downloading update from server...");
    dlg.setMinimum(0);
    dlg.setMaximum(100);
    dlg.setValue(35);//进度
    // create a new thread //启动后台工作线程,从服务器下载更新,下载就调用上一个函数
    dlg.exec();
}

void Widget::PrintDialogBtn_Clicked()
{
    QPrintDialog dlg(this);
    dlg.setWindowTitle("Print Dialog Test");
    if( dlg.exec() == QPrintDialog::Accepted )
    {
        QPrinter* p = dlg.printer();//封装了打印机及打印参数
        QTextDocument td;//定义被打印对象
        //td.setPlainText("Printer object test!");
        td.setHtml("<h1>Print html object test</hl>");
        p->setOutputFileName("D:\\test.xps"); //打印到d盘
        td.print(p);
    }
}

Widget::~Widget()
{
    
}

#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();

}

小结:qt中标准对话框的设计模式:

GUI界面部件产生数据对象,业务逻辑中的其他对象使用数据对象,GUI界面与业务逻辑通过数据对象连接。

用户->操作标准对话框对象->产生数据对象  <-  其他qt对象使用


猜你喜欢

转载自blog.csdn.net/ws857707645/article/details/80532355
18
18.