日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习:基本对话框

發(fā)布時(shí)間:2024/9/30 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT学习:基本对话框 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在QT的基本對(duì)話框中包括標(biāo)準(zhǔn)文件對(duì)話框、標(biāo)準(zhǔn)顏色對(duì)話框、標(biāo)準(zhǔn)字體對(duì)話框、標(biāo)準(zhǔn)輸入對(duì)話框以及標(biāo)準(zhǔn)消息對(duì)話框,各種標(biāo)準(zhǔn)基本對(duì)話框通過調(diào)用各自不同的靜態(tài)函數(shù)來完成其功能。
下圖為標(biāo)準(zhǔn)基本對(duì)話框所需的靜態(tài)函數(shù)

一、標(biāo)準(zhǔn)文件對(duì)話框

用戶可以通過如上圖這些函數(shù)可以很方便地定制自己地文件對(duì)話框。getOpenFileName()函數(shù)地詳細(xì)介紹如下:

QString QFileDialog: :getOpenFileName ( Qwidget* parent=0,//標(biāo)準(zhǔn)文件對(duì)話框的父窗口const QString & caption=QString(), //標(biāo)準(zhǔn)文件對(duì)話框的標(biāo)題名const QString & dir=QString(),//指定了默認(rèn)目錄,若此參數(shù)帶有文件名,則文件名將是默認(rèn)選中地文件const QString & filter=QString(),//對(duì)文件類型進(jìn)行過濾,只有與過濾器匹配地文件才顯示QString* selectedFilter=0,//用戶選擇的過濾器通過此參數(shù)返回Options options=0//選擇顯示文件名的格式,默認(rèn)是同時(shí)顯示目錄與文件名 )

下面代碼是使用文件對(duì)話框地實(shí)例:

setWindowTitle(tr("各種標(biāo)準(zhǔn)對(duì)話框的實(shí)例"));fileBtn=new QPushButton; //各個(gè)控件對(duì)象的初始化fileBtn->setText(tr("文件標(biāo)準(zhǔn)對(duì)話框?qū)嵗?#34;));fileLineEdit=new QLineEdit; //用來顯示選擇的文件名mainLayout=new QGridLayout(this); //布局設(shè)計(jì)mainLayout->addWidget(fileBtn,0,0);mainLayout->addWidget(fileLineEdit,0,1);connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile()));

其中showFile()具體實(shí)現(xiàn)如下:

void Dialog::showFile() {QString s = QFileDialog::getOpenFileName(this,"open file dialog","/","C++ files(*.cpp);;C files(*.c);;Head files(*.h)");fileLineEdit->setText(s); }

二、標(biāo)準(zhǔn)顏色對(duì)話框

getColor()函數(shù)形式如下:

QColor getColor (const QColor& initial=Qt::white,//指定了默認(rèn)選中的顏色,默認(rèn)為白色QWidget* parent=0//標(biāo)準(zhǔn)顏色對(duì)話框的父窗口 )

函數(shù)用法如下:

colorBtn=new QPushButton; //創(chuàng)建各個(gè)控件的對(duì)象 colorBtn->setText(tr("顏色標(biāo)準(zhǔn)對(duì)話框?qū)嵗?#34;)); colorFrame=new QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true); mainLayout->addWidget(colorBtn,1,0); //布局設(shè)計(jì) mainLayout->addWidget(colorFrame,1,1); connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColor())); //事件關(guān)聯(lián)

其中showColor()函數(shù)具體實(shí)現(xiàn)如下:

void Dialog::showColor() {QColor c = QColorDialog::getColor(Qt::blue);if(c.isValid()){colorFrame->setPalette(QPalette(c));} }

三、標(biāo)準(zhǔn)字體選擇框

下面是getFont()的函數(shù)形式:

QFont getFont ( bool* ok,//若用戶單擊“OK"按鈕,則該參數(shù)*ok將設(shè)為true,函數(shù)返回用戶所選擇的字體:否則,將設(shè)為false,此時(shí)函數(shù)返回默認(rèn)字體 Qwidget* parent=0//標(biāo)準(zhǔn)字體對(duì)話框的父窗口 );

具體用法如下:

fontBtn=new QPushButton; //創(chuàng)建控件的對(duì)象 fontBtn->setText(tr("字體標(biāo)準(zhǔn)對(duì)話框?qū)嵗?#34;)); fontLineEdit=new QLineEdit; //顯示更改的字符串 fontLineEdit->setText(tr("Welcome!")); mainLayout->addWidget(fontBtn,2,0); //布局設(shè)計(jì) mainLayout->addWidget(fontLineEdit,2,1); connect(fontBtn,SIGNAL(clicked()),this,SLOT(showFont())); //事件關(guān)聯(lián)

其中showFont的具體實(shí)現(xiàn)如下:

void Dialog::showFont() {bool ok;QFont f = QFontDialog::getFont(&ok);if (ok){fontLineEdit->setFont(f);} }

四、標(biāo)準(zhǔn)輸入對(duì)話框

inputBtn=new QPushButton; //創(chuàng)建控件的對(duì)象 inputBtn->setText(tr("標(biāo)準(zhǔn)輸入對(duì)話框?qū)嵗?#34;)); mainLayout->addWidget(inputBtn,3,0); //布局設(shè)計(jì) connect(inputBtn,SIGNAL(clicked()),this,SLOT(showInputDlg()));//事件關(guān)聯(lián)

其中showInputDlg具體實(shí)現(xiàn)為:

void Dialog::showInputDlg() {inputDlg =new InputDlg(this);inputDlg->show(); }

inputDlg.cpp代碼為:

#include "inputdlg.h" #include <QInputDialog> InputDlg::InputDlg(QWidget* parent):QDialog(parent) {setWindowTitle(tr("標(biāo)準(zhǔn)輸入對(duì)話框?qū)嵗?#34;));nameLabel1 =new QLabel;nameLabel1->setText(tr("姓名:"));nameLabel2 =new QLabel;nameLabel2->setText(tr("周何駿")); //姓名的初始值nameLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);nameBtn =new QPushButton;nameBtn->setText(tr("修改姓名"));sexLabel1 =new QLabel;sexLabel1->setText(tr("性別:"));sexLabel2 =new QLabel;sexLabel2->setText(tr("男")); //性別的初始值sexLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);sexBtn =new QPushButton;sexBtn->setText(tr("修改性別"));ageLabel1 =new QLabel;ageLabel1->setText(tr("年齡:"));ageLabel2 =new QLabel;ageLabel2->setText(tr("21")); //年齡的初始值ageLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);ageBtn =new QPushButton;ageBtn->setText(tr("修改年齡"));scoreLabel1 =new QLabel;scoreLabel1->setText(tr("成績:"));scoreLabel2 =new QLabel;scoreLabel2->setText(tr("80")); //成績的初始值scoreLabel2->setFrameStyle(QFrame::Panel|QFrame::Sunken);scoreBtn =new QPushButton;scoreBtn->setText(tr("修改成績"));mainLayout =new QGridLayout(this);mainLayout->addWidget(nameLabel1,0,0);mainLayout->addWidget(nameLabel2,0,1);mainLayout->addWidget(nameBtn,0,2);mainLayout->addWidget(sexLabel1,1,0);mainLayout->addWidget(sexLabel2,1,1);mainLayout->addWidget(sexBtn,1,2);mainLayout->addWidget(ageLabel1,2,0);mainLayout->addWidget(ageLabel2,2,1);mainLayout->addWidget(ageBtn,2,2);mainLayout->addWidget(scoreLabel1,3,0);mainLayout->addWidget(scoreLabel2,3,1);mainLayout->addWidget(scoreBtn,3,2);mainLayout->setMargin(15);mainLayout->setSpacing(10);connect(nameBtn,SIGNAL(clicked()),this,SLOT(ChangeName()));connect(sexBtn,SIGNAL(clicked()),this,SLOT(ChangeSex()));connect(ageBtn,SIGNAL(clicked()),this,SLOT(ChangeAge()));connect(scoreBtn,SIGNAL(clicked()),this,SLOT(ChangeScore())); } void InputDlg::ChangeName() {bool ok;QString text=QInputDialog::getText(this,tr("標(biāo)準(zhǔn)字符串輸入對(duì)話框"),tr("請(qǐng)輸入姓名:"), QLineEdit::Normal,nameLabel2->text(),&ok);if (ok && !text.isEmpty())nameLabel2->setText(text); } void InputDlg::ChangeSex() {QStringList SexItems;SexItems << tr("男") << tr("女");bool ok;QString SexItem = QInputDialog::getItem(this, tr("標(biāo)準(zhǔn)條目選擇對(duì)話框"),tr("請(qǐng)選擇性別:"), SexItems, 0, false, &ok);if (ok && !SexItem.isEmpty())sexLabel2->setText(SexItem); } void InputDlg::ChangeAge() {bool ok;int age = QInputDialog::getInt(this, tr("標(biāo)準(zhǔn)int類型輸入對(duì)話框"),tr("請(qǐng)輸入年齡:"), ageLabel2->text().toInt(&ok), 0, 100, 1, &ok);if (ok)ageLabel2->setText(QString(tr("%1")).arg(age)); } void InputDlg::ChangeScore() {bool ok;double score = QInputDialog::getDouble(this, tr("標(biāo)準(zhǔn)double類型輸入對(duì)話框"),tr("請(qǐng)輸入成績:"),scoreLabel2->text().toDouble(&ok), 0, 100, 1, &ok);if (ok)scoreLabel2->setText(QString(tr("%1")).arg(score)); }

五、消息對(duì)話框

這里因?yàn)樗邢⒖蛴梅ǘ碱愃?#xff0c;所以我們只詳細(xì)介紹其中一個(gè)即可。
Question消息框函數(shù)形式如下:

StandardButton QMessageBox::question ( Qwidget* parent,//消息框的父窗口指針const QString& title,//消息框的標(biāo)題欄const QString& text,//消息框的文字提示信息StandardButtons buttons=Ok,//填寫希望在消息框中出現(xiàn)的按鈕StandardButton defaultBut ton=NoButton//默認(rèn)按鈕,即消息框出現(xiàn)時(shí),焦點(diǎn)默認(rèn)處于哪個(gè)按鈕上。 );

具體用法為:

MsgBtn =new QPushButton; //創(chuàng)建控件對(duì)象 MsgBtn->setText(tr("標(biāo)準(zhǔn)消息對(duì)話框?qū)嵗?#34;)); mainLayout->addWidget(MsgBtn,3,1); connect(MsgBtn,SIGNAL(clicked()),this,SLOT(showMsgDlg())); void Dialog::showMsgDlg() {msgDlg =new MsgBoxDlg();msgDlg->show(); }

msgboxdlg的cpp文件具體實(shí)現(xiàn)如下:

#include "msgboxdlg.h" #include <QMessageBox> MsgBoxDlg::MsgBoxDlg(QWidget *parent):QDialog(parent) {setWindowTitle(tr("標(biāo)準(zhǔn)消息對(duì)話框?qū)嵗?#34;)); //設(shè)置對(duì)話框的標(biāo)題label =new QLabel;label->setText(tr("請(qǐng)選擇一種消息框"));questionBtn =new QPushButton;questionBtn->setText(tr("QuestionMsg"));informationBtn =new QPushButton;informationBtn->setText(tr("InformationMsg"));warningBtn =new QPushButton;warningBtn->setText(tr("WarningMsg"));criticalBtn =new QPushButton;criticalBtn->setText(tr("CriticalMsg"));aboutBtn =new QPushButton;aboutBtn->setText(tr("AboutMsg"));aboutQtBtn =new QPushButton;aboutQtBtn->setText(tr("AboutQtMsg"));//布局mainLayout =new QGridLayout(this);mainLayout->addWidget(label,0,0,1,2);mainLayout->addWidget(questionBtn,1,0);mainLayout->addWidget(informationBtn,1,1);mainLayout->addWidget(warningBtn,2,0);mainLayout->addWidget(criticalBtn,2,1);mainLayout->addWidget(aboutBtn,3,0);mainLayout->addWidget(aboutQtBtn,3,1);//事件關(guān)聯(lián)connect(questionBtn,SIGNAL(clicked()),this,SLOT(showQuestionMsg()));connect(informationBtn,SIGNAL(clicked()),this,SLOT(showInformationMsg()));connect(warningBtn,SIGNAL(clicked()),this,SLOT(showWarningMsg()));connect(criticalBtn,SIGNAL(clicked()),this,SLOT(showCriticalMsg()));connect(aboutBtn,SIGNAL(clicked()),this,SLOT(showAboutMsg()));connect(aboutQtBtn,SIGNAL(clicked()),this,SLOT(showAboutQtMsg())); } void MsgBoxDlg::showQuestionMsg() {label->setText(tr("Question Message Box"));switch(QMessageBox::question(this,tr("Question消息框"),tr("您現(xiàn)在已經(jīng)修改完成,是否要結(jié)束程序?"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok)){case QMessageBox::Ok:label->setText("Question button/Ok");break;case QMessageBox::Cancel:label->setText("Question button/Cancel");break;default:break;}return; } void MsgBoxDlg::showInformationMsg() {label->setText(tr("Information Message Box"));QMessageBox::information(this,tr("Information消息框"),tr("這是Information消息框測試,歡迎您!"));return; } void MsgBoxDlg::showWarningMsg() {label->setText(tr("Warning Message Box"));switch(QMessageBox::warning(this,tr("Warning消息框"),tr("您修改的內(nèi)容還未保存,是否要保存對(duì)文檔的修改?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)){case QMessageBox::Save:label->setText(tr("Warning button/Save"));break;case QMessageBox::Discard:label->setText(tr("Warning button/Discard"));break;case QMessageBox::Cancel:label->setText(tr("Warning button/Cancel"));break;default:break;}return; } void MsgBoxDlg::showCriticalMsg() {label->setText(tr("Critical Message Box"));QMessageBox::critical(this,tr("Critical消息框"),tr("這是一個(gè)Critical消息框測試!"));return; } void MsgBoxDlg::showAboutMsg() {label->setText(tr("About Message Box"));QMessageBox::about(this,tr("About消息框"),tr("這是一個(gè)About消息框測試!"));return; } void MsgBoxDlg::showAboutQtMsg() {label->setText(tr("About Qt Message Box"));QMessageBox::aboutQt(this,tr("About Qt消息框"));return; }

總結(jié)

以上是生活随笔為你收集整理的QT学习:基本对话框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。