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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习:基本对话框

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

在QT的基本對話框中包括標準文件對話框、標準顏色對話框、標準字體對話框、標準輸入對話框以及標準消息對話框,各種標準基本對話框通過調用各自不同的靜態函數來完成其功能。
下圖為標準基本對話框所需的靜態函數

一、標準文件對話框

用戶可以通過如上圖這些函數可以很方便地定制自己地文件對話框。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//選擇顯示文件名的格式,默認是同時顯示目錄與文件名 )

下面代碼是使用文件對話框地實例:

setWindowTitle(tr("各種標準對話框的實例"));fileBtn=new QPushButton; //各個控件對象的初始化fileBtn->setText(tr("文件標準對話框實例"));fileLineEdit=new QLineEdit; //用來顯示選擇的文件名mainLayout=new QGridLayout(this); //布局設計mainLayout->addWidget(fileBtn,0,0);mainLayout->addWidget(fileLineEdit,0,1);connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile()));

其中showFile()具體實現如下:

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

二、標準顏色對話框

getColor()函數形式如下:

QColor getColor (const QColor& initial=Qt::white,//指定了默認選中的顏色,默認為白色QWidget* parent=0//標準顏色對話框的父窗口 )

函數用法如下:

colorBtn=new QPushButton; //創建各個控件的對象 colorBtn->setText(tr("顏色標準對話框實例")); colorFrame=new QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true); mainLayout->addWidget(colorBtn,1,0); //布局設計 mainLayout->addWidget(colorFrame,1,1); connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColor())); //事件關聯

其中showColor()函數具體實現如下:

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

三、標準字體選擇框

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

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

具體用法如下:

fontBtn=new QPushButton; //創建控件的對象 fontBtn->setText(tr("字體標準對話框實例")); fontLineEdit=new QLineEdit; //顯示更改的字符串 fontLineEdit->setText(tr("Welcome!")); mainLayout->addWidget(fontBtn,2,0); //布局設計 mainLayout->addWidget(fontLineEdit,2,1); connect(fontBtn,SIGNAL(clicked()),this,SLOT(showFont())); //事件關聯

其中showFont的具體實現如下:

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

四、標準輸入對話框

inputBtn=new QPushButton; //創建控件的對象 inputBtn->setText(tr("標準輸入對話框實例")); mainLayout->addWidget(inputBtn,3,0); //布局設計 connect(inputBtn,SIGNAL(clicked()),this,SLOT(showInputDlg()));//事件關聯

其中showInputDlg具體實現為:

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

inputDlg.cpp代碼為:

#include "inputdlg.h" #include <QInputDialog> InputDlg::InputDlg(QWidget* parent):QDialog(parent) {setWindowTitle(tr("標準輸入對話框實例"));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("標準字符串輸入對話框"),tr("請輸入姓名:"), 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("標準條目選擇對話框"),tr("請選擇性別:"), SexItems, 0, false, &ok);if (ok && !SexItem.isEmpty())sexLabel2->setText(SexItem); } void InputDlg::ChangeAge() {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)); } void InputDlg::ChangeScore() {bool ok;double score = QInputDialog::getDouble(this, tr("標準double類型輸入對話框"),tr("請輸入成績:"),scoreLabel2->text().toDouble(&ok), 0, 100, 1, &ok);if (ok)scoreLabel2->setText(QString(tr("%1")).arg(score)); }

五、消息對話框

這里因為所有消息框用法都類似,所以我們只詳細介紹其中一個即可。
Question消息框函數形式如下:

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

具體用法為:

MsgBtn =new QPushButton; //創建控件對象 MsgBtn->setText(tr("標準消息對話框實例")); mainLayout->addWidget(MsgBtn,3,1); connect(MsgBtn,SIGNAL(clicked()),this,SLOT(showMsgDlg())); void Dialog::showMsgDlg() {msgDlg =new MsgBoxDlg();msgDlg->show(); }

msgboxdlg的cpp文件具體實現如下:

#include "msgboxdlg.h" #include <QMessageBox> MsgBoxDlg::MsgBoxDlg(QWidget *parent):QDialog(parent) {setWindowTitle(tr("標準消息對話框實例")); //設置對話框的標題label =new QLabel;label->setText(tr("請選擇一種消息框"));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);//事件關聯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("您現在已經修改完成,是否要結束程序?"),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("您修改的內容還未保存,是否要保存對文檔的修改?"),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("這是一個Critical消息框測試!"));return; } void MsgBoxDlg::showAboutMsg() {label->setText(tr("About Message Box"));QMessageBox::about(this,tr("About消息框"),tr("這是一個About消息框測試!"));return; } void MsgBoxDlg::showAboutQtMsg() {label->setText(tr("About Qt Message Box"));QMessageBox::aboutQt(this,tr("About Qt消息框"));return; }

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。