QT 五大基本对话框

版权声明:欢迎大佬们指点 https://blog.csdn.net/bloke_come/article/details/82759890

标准文件对话框(QFileDialog)
选择文件

getOpenFileName               // 获得用户选择的文件名
getSaveFileName               // 获得用户保存的文件名
getExistingDirectory          // 获得用户选择的已保存的目录名
getOpenFileNames              // 获得用户选择的文件名列表

//getOpenFileName解释

QString QFileDialog::getOpenFileName
(   
    QWidget* parent=0,                   // 标准文件对话框的父窗口
    const QString& caption=QString(),    // 标准文件对话框的标题名
    const QString& dir=QString(),        // 指定默认目录,若带参数,则文件将是参数
    const QString& filter=QString(),     // 过滤器,只有与过滤器匹配的才会显示,多种过滤器之间用";;"隔开
    QString * selectedFilter=0,          // 用户选择的过滤器通过此参数返回
    Options options=0                    // 选择显示文件名的格式,默认是同时显示目录与文件名
)

使用示例

QString s = QFileDialog::getOpenFileName(this,"open file dialog","/","C++ files(*.cpp);;C files(*.c);;Head files(*.h)");  // 全部文件(*.*)

标准颜色对话框(QColorDialog)

getColor()  // 获取用户选择的颜色值

QColor getColor
(
    const QColor& initial=Qt::white,    // 默认白色
    QWidget* parent=0                   // 标准颜色对话框的父窗口
);

// 可以通过isValid()判断返回的颜色是否有效
// 示例,用QFrame承载颜色
void Dialog::showColor()
{
    QColor c = QColorDialog::getColor(Qt::blue);
    if(c.isValid())
    {
        colorFrame->setPalette(QPalette(c));
    }
}

标准字体对话框(QFontDialog)

getFont()// 获得用户选择字体
QFont getFont
(
    bool* ok,                   // 如果OK则返回选择字体,否则返回默认字体
    QWidget* parent=0           // 标准字体对话框的父窗口
); 
// 示例
bool ok;
QFont f = QFontDialog::getFont(&ok);
if (ok)
{
    fontLineEdit->setFont(f);
}

标准输入对话框(QInputDialog)

1、通过标准字符串输入对话框修改QLabel控件
QString getText
(
    QWidget* parent,                           //标准输入对话框的父窗口
    const QString& title,                      //标准输入对话框的标题名
    const QString& label,                      //标准输入对话框的标签提示
    QLineEdit::EchoMode mode=QLineEdit::Normal,//指定标准输入对话框中QLineEdit控件的输入模式
    const QString& text=QString(),             //标准字符串输入对话框弹出时QLineEdit控件中默认出现的文字
    bool* ok=0,                                //如果用户点击"OK"返回true,反之,点击"Cancle"返回false
    Qt::WindowFlags flags=0                    //指明标准输入对话框的窗体标识
);

// 使用示例
bool ok;
QString text=QInputDialog::getText(this,tr("标准字符串输入对话框"), tr("请输入姓名:"), QLineEdit::Normal,nameLabel2->text(),&ok);
if (ok && !text.isEmpty())
    nameLabel2->setText(text);

文本示例

2、通过标准条目选择对话框修改QLabel控件
QString getItem
(
    QWidget* parent,          // 标准输入对话框的父窗口
    const QString& title,     // 标准输入对话框的标题名
    const QString& label,     // 标准输入对话框的标签提示
    const QStringList& items, // 指定对话框中QComboBox控件显示可选条目为一个QStringList对象
    int current=0,            // QComboBox控件默认显示的条目序号 
    bool editable=true,       // 指定QComboBox控件中显示的文字是否可编辑,true为可编辑
    bool* ok=0,               // 如果用户点击"OK"返回true,反之,点击"Cancle"返回false
    Qt::WindowFlags flags=0   // 指明标准输入对话框的窗体标识
);

// 使用示例
QStringList SexItems;
SexItems << tr("男") << tr("女");
bool ok;
QString SexItem = QInputDialog::getItem(this, tr("标准条目选择对话框"),
    tr("请选择性别:"), SexItems, 0, false, &ok);
if (ok && !SexItem.isEmpty())
    sexLabel2->setText(SexItem);

修改QComboBox

3、通过标准int类型输入对话框修改QLable控件
int getInt
(
    QWidget* parent,        // 标准输入对话框的父窗口
    const QString& title,   // 标准输入对话框的标题名
    const QString& label,   // 标准输入对话框的标签提示
    int value=0,            // 指定标准输入对话框中QSpinBox控件的默认显示值
    int min=-2147483647,    // 指定QSpinBox控件的数值范围
    int max=2147483647,
    int step=1,             // 指定QSpinBox控件的步进值
    bool* ok=0,             // 如果用户点击"OK"返回true,反之,点击"Cancle"返回false
    Qt::WindowFlags flags=0 // 指明标准输入对话框的窗口标识
); 
// 使用示例
bool ok;
int age = QInputDialog::getInt(this, tr("标准int类型输入对话框"),
    tr("请输入年龄:"), ageLabel2->text().toInt(&ok), 0, 100, 1, &ok);
if (ok)
    ageLabel2->setText(QString(tr("%1")).arg(age));

这里写图片描述

// double和int类型一样

标准信息对话框(QMessageBox)

6种消息对话框,分别为:Question、Warning、Information、Critical、About、AboutQt;其中Question、Warning、Information、Critical消息框用法基本相似

StandardButton QMessageBox::question
(
    QWidget* parent,                            //消息框的父窗口指针
    const QString& title,                       //消息框的标题栏
    const QString& text,                        //消息框的文字提示信息
    StandardButtons buttons=Ok,                 //可以根据"|"选择标准按钮进行组合,有QMessageBox::Ok、QMessageBox::Close、QMessageBox::Discard等,但是出现一般要成对出现,通常Save和Discard成对出现
    StandardButton defaultButton=NoButton       //默认按钮,即消息框出现时,焦点默认处在那个按钮上
); 

StandardButton QMessageBox::information
(
    QWidget*parent,                     //消息框的父窗口指针
    const QString& title,               //消息框的标题栏
    const QString& text,                //消息框的文字提示信息
    StandardButtons buttons=Ok,         //同Question消息框的注释内容
    StandardButton defaultButton=NoButton   //同Question消息框的注释内容
);

StandardButton QMessageBox::warning
(
    QWidget* parent,                      //消息框的父窗口指针
    const QString& title,                 //消息框的标题栏
    const QString& text,                  //消息框的文字提示信息
    StandardButtons buttons=Ok,           //同Question消息框的注释内容
    StandardButton defaultButton=NoButton //同Question消息框的注释内容
); 

StandardButton QMessageBox::critical
(
    QWidget* parent,                        //消息框的父窗口指针
    const QString& title,                   //消息框的标题栏
    const QString& text,                    //消息框的文字提示信息
    StandardButtons buttons=Ok,             //同Question消息框的注释内容
    StandardButton defaultButton=NoButton   //同Question消息框的注释内容
);

void QMessageBox::about
(
    QWidget* parent,                        //消息框的父窗口指针
    const QString& title,                   //消息框的标题栏
    const QString& text                     //消息框的文字提示信息
);
// 类似Question、Warning、Information、Critical消息框示例,以Question为例
QMessageBox::Question(this,tr("Question消息框"),tr("这是Question消息框测试,欢迎您!"));

void QMessageBox::aboutQt
(
    QWidget* parent,                         //消息框的父窗口指针
    const QString& title=QString()           //消息框的标题栏
);
// 示例
QMessageBox::aboutQt(this,tr("About Qt消息框"));  

自定义消息框(Custom)

QMessageBox customMsgBox;
customMsgBox.setWindowTitle(tr("用户自定义消息框"));
QPushButton *yesBtn = customMsgBox.addButton(tr("Yes"),QMessageBox::ActionRole);
QPushButton *noBtn = customMsgBox.addButton(tr("No"),QMessageBox::ActionRole);
QPushButton *cancelBtn = customMsgBox.addButton(QMessageBox::Cancel);
customMsgBox.setText(tr("这是一个用户自定义消息框!"));
customMsgBox.setIconPixmap(QPixmap("Qt.png"));
customMsgBox.exec();
if(customMsgBox.clickedButton()==yesBtn)
    label->setText("Custom Message Box/Yes");
if(customMsgBox.clickedButton()==noBtn)
    label->setText("Custom Message Box/No");
if(customMsgBox.clickedButton()==cancelBtn)
    label->setText("Custom Message Box/Cancel");

猜你喜欢

转载自blog.csdn.net/bloke_come/article/details/82759890
今日推荐