《ASCE1885的Qt学习记录》の标准对话框

本文拟就Qt提供的标准对话框函数:QFileDialogQColorDialogQFontDialog的使用方法作一实例进行说明。本实例是在Windows7+Qt v4.7.0+QtCreator 2.0.0环境下编译运行的,运行效果如图:

单击“文件对话框”按钮,会弹出文件选择对话框,选中的文件名将显示在右边;单击“颜色对话框”按钮,会弹出颜色选择对话框,选中的颜色将显示在右边;单击“字体对话框”按钮,将弹出字体选择对话框,选中的字体将更新右边显示的字符串。

 

1QFileDialog类提供了四个静态函数,方便用户定制自己的文件对话框:

 

getOpenFileName函数用于获得用户选择的文件名,原型如下:

QString     getOpenFileName ( QWidget * parent = 0, const QString & caption = QString(),

                          const QString & dir = QString(), const QString & filter = QString(),

                          QString * selectedFilter = 0, Options options = 0 )

这个函数下面例子会用到,这里着重介绍一下:dir参数指定了默认的目录,如果dir参数带有文件名,则该文件将是默认选中的文件;filter参数对文件类型进行过滤,只有与过滤器匹配的文件类型才显示,filter可以同时指定多种过滤方式供用户选择,多种过滤器之间用“;;”隔开,用户选择的过滤器通过参数selectedFilter返回。

 

getSavedFileName函数用于获取用户保存的文件名,原型如下:

QString     getSaveFileName ( QWidget * parent = 0, const QString & caption = QString(),

                          const QString & dir = QString(), const QString & filter = QString(),

                          QString * selectedFilter = 0, Options options = 0 )

 

getExistingDirectory函数用于获取用户选择的已存在目录名,原型如下:

QString     getExistingDirectory ( QWidget * parent = 0, const QString & caption = QString(),

                               const QString & dir = QString(), Options options = ShowDirsOnly )

 

getOpenFileNames函数用于获取用户选择的文件名列表,原型如下:

QStringList    getOpenFileNames ( QWidget * parent = 0, const QString & caption = QString(),

                                   const QString & dir = QString(), const QString & filter = QString(),

                                   QString * selectedFilter = 0, Options options = 0 )

 

标准文件选择对话框如下:

 

2QColorDialog类提供了getColor()静态函数用户返回用户选择的颜色值,原型如下:

QColor getColor ( const QColor & initial = Qt::white, QWidget * parent = 0 )

其中,initial参数指定了默认选中的颜色,默认是白色;通过QColor::isValid()函数可以判断用户选择颜色是否有效,若用户选择取消,QColor::isValid()将返回false

 

标准颜色选择对话框如下:

 

3QFontDialog类提供了静态函数getFont()用于返回用户选择的字体,原型如下:

QFont     getFont ( bool * ok, QWidget * parent = 0 )

当用户点击OK按钮,参数*ok返回true,函数返回用户选择的字体;否则*okfalse,函数返回默认字体。

 

标准字体选择对话框如下:

 

具体代码如下:

=======================头文件standarddialog.h===================

#ifndef STANDARDDIALOGS_H

#define STANDARDDIALOGS_H

#include <QtCore>

#include <QtGui/QDialog>

class QGridLayout;

class QWidget;

class QPushButton;

class QLineEdit;

class QFrame;

class StandardDialogs : public QDialog

{

    Q_OBJECT

public:

    StandardDialogs(QWidget *parent=0, Qt::WindowFlags f=0);

    ~StandardDialogs();

public:

    QGridLayout *layout;

    QPushButton *filePushButton;

    QPushButton *colorPushButton;

    QPushButton *fontPushButton;

    QLineEdit *fileLineEdit;

    QLineEdit *fontLineEdit;

    QFrame *colorFrame;

private slots:

    void slotOpenFileDlg();

    void slotOpenColorDlg();

    void slotOpenFontDlg();

};

#endif // STANDARDDIALOGS_H

 

======================源文件standarddialog.cpp===================

#include "standarddialogs.h"

#include <QtGui/QGridLayout>

#include <QtGui/QLineEdit>

#include <QtGui/QFrame>

#include <QtGui/QFileDialog>

#include <QtGui/QColorDialog>

#include <QtGui/QFontDialog>

#include <QtGui/QColor>

#include <QtGui/QPushButton>

StandardDialogs::StandardDialogs(QWidget *parent, Qt::WindowFlags f)

    : QDialog(parent, f)

{

    setWindowTitle(tr("ASCE Standard Dialogs"));

    layout = new QGridLayout(this);

    filePushButton = new QPushButton;

    filePushButton->setText(QString::fromLocal8Bit("文件对话框"));

    colorPushButton = new QPushButton;

    colorPushButton->setText(QString::fromLocal8Bit("颜色对话框"));

    fontPushButton = new QPushButton;

    fontPushButton->setText(QString::fromLocal8Bit("字体对话框"));

    fileLineEdit = new QLineEdit;

    colorFrame = new QFrame;

    colorFrame->setFrameShape(QFrame::Box);

    colorFrame->setAutoFillBackground(true);

    fontLineEdit = new QLineEdit;

    fontLineEdit->setText(tr("ASCE1885"));

    layout->addWidget(filePushButton, 0, 0);

    layout->addWidget(fileLineEdit, 0, 1);

    layout->addWidget(colorPushButton, 1, 0);

    layout->addWidget(colorFrame, 1, 1);

    layout->addWidget(fontPushButton, 2, 0);

    layout->addWidget(fontLineEdit, 2, 1);

    layout->setMargin(15);

    layout->setSpacing(10);

    connect(filePushButton, SIGNAL(clicked()), this, SLOT(slotOpenFileDlg()));

    connect(colorPushButton, SIGNAL(clicked()), this, SLOT(slotOpenColorDlg()));

    connect(fontPushButton, SIGNAL(clicked()), this, SLOT(slotOpenFontDlg()));

}

StandardDialogs::~StandardDialogs()

{

}

void StandardDialogs::slotOpenFileDlg()

{

    QString str = QFileDialog::getOpenFileName(

            this, "Open File Dialog",

            "/", "C++ files(*.cpp);;C files(*.c);;Head files(*.h)");

    fileLineEdit->setText(str.toAscii());

}

void StandardDialogs::slotOpenColorDlg()

{

    QColor color = QColorDialog::getColor(Qt::blue);

    if(color.isValid())

    {

        colorFrame->setPalette(QPalette(color));

    }

}

void StandardDialogs::slotOpenFontDlg()

{

    bool ok;

    QFont font = QFontDialog::getFont(&ok);

    if(ok)

    {

        fontLineEdit->setFont(font);

    }

}

 

======================工程StandardDialogs.pro文件=================

#-------------------------------------------------

#

# Project created by QtCreator 2010-08-15T19:43:02

#

#-------------------------------------------------

QT       += core

TARGET = StandardDialogs

CONFIG   += windows

CONFIG   -= app_bundle

TEMPLATE = app

LIBS += D:/Qt/4.7.0-beta2/lib/QtGui4.lib //注意,此处必须指明用到的静态库,否则链接出错

SOURCES += main.cpp /

    standarddialogs.cpp

HEADERS += /

    standarddialogs.h

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值