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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt图形界面编程入门(基本窗口及控件)

發(fā)布時(shí)間:2025/3/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt图形界面编程入门(基本窗口及控件) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本窗口類QWidget

QWidget是所有窗體部件的基類,例如對(duì)話框類,主窗體類,以及其他諸如按鈕,編輯框,標(biāo)簽等等都是由QWidget派生得到,QWidget擁有的方法往往都可以在其他子類中使用。

窗體的幾何尺寸分為包含邊框和標(biāo)題、不包含邊框和標(biāo)題兩種。

以下是常用函數(shù)

(1)包括窗框(即整個(gè)窗口)的函數(shù)。

x(),y(),pos():獲取左上角坐標(biāo)

frameGeometry():獲取窗體尺寸(返回一個(gè)矩形QRect)

move():移動(dòng)窗體到某個(gè)位置。

(2)不包括窗體(即客戶區(qū)域)(返回一個(gè)矩形QRect)

width(),heigh():獲取客戶區(qū)寬度、高度

setGeometry():設(shè)置窗體在屏幕中的位置。

窗體幾何尺寸的設(shè)置和獲取

首先我們建立一個(gè)基于QWidget的無UI設(shè)計(jì)界面的Qt Widgets Application應(yīng)用。

在main.cpp頭部文件添加

#include<QDebug>

?

?

然后,修改主函數(shù)main.cpp文件如下

?

?

#include "widget.h" #include <QApplication> #include<QDebug> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();w.setGeometry(50,50,200,200);qDebug() << w.x() << " " << w.y();qDebug() << w.geometry().width() << " " << w.frameGeometry().width();qDebug() << w.geometry().height() << " " << w.frameGeometry().height();return a.exec(); }

保存后運(yùn)行

運(yùn)行上面的程序會(huì)顯示一個(gè)窗口,如圖

它的客戶區(qū)左上角距離屏幕左上角邊界均為50,客戶區(qū)的長(zhǎng)和寬均為200

這里的(41,12)是窗體框架左上角的坐標(biāo),它在客戶區(qū)的左上角(50,50)的左上方。而顯示器左上角是原點(diǎn)。

setGeometry函數(shù)設(shè)置客戶區(qū)在屏幕上的位置及其寬度、高度。

窗口標(biāo)題及大小控制

首先建立一個(gè)基于QWidget的有UI設(shè)計(jì)界面的Qt Widgets Application應(yīng)用。

然后修改Widget.cpp文件的構(gòu)造函數(shù)如下:

窗口控件類概覽

標(biāo)簽

標(biāo)簽(QLabel)一般用于顯示簡(jiǎn)單的文本。例如:

QLabel *label = new QLabel(this); label->setGemoetry(10,10,150,80); label->setText("Label"); //設(shè)置文本對(duì)齊方式,多個(gè)參數(shù)用 | 分隔 label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

標(biāo)簽文本對(duì)齊方式定義如下:

AlignTop:將文本添加到QLabel對(duì)象的上部

AlignButton:將文本添加到QLabel對(duì)象的下部

AlignLeft:沿著QLabel對(duì)象的左邊添加文本

AlignRight:沿著QLabel對(duì)象的右邊添加文本

AlignHCenter:將文本添加到QLabel對(duì)象水平中心的位置

AlignVCenter:將文本添加到QLabel對(duì)象的垂直中心位置

用標(biāo)簽顯示位圖

第一步,建立一個(gè)基類位QWidget的應(yīng)用

添加需要展示的圖片

第二步,修改main函數(shù)如下

#include "widget.h" #include <QApplication> #include <QLabel> #include <QImage> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;QLabel *pTag = new QLabel(&w);//路徑不同,圖片屬性不同,請(qǐng)自行修改路徑和屬性//QImage image("e:/img.png");pTag->setPixmap(QPixmap::fromImage(image));pTag->setGeometry(0,0,image.width(),image.height());w.show();return a.exec();

這個(gè)例子用QImage對(duì)象載入E盤根目錄下的png文件,再利用QPixmap::formImage靜態(tài)函數(shù)將png格式轉(zhuǎn)換為xpm格式,然后用setPixmap函數(shù)設(shè)置標(biāo)簽位圖。

按鈕

對(duì)于普通按鈕而言,可設(shè)置圖標(biāo),文字,顯示狀態(tài)等。

按鈕的使用

第一步,建立一個(gè)基類為QDialog的應(yīng)用,在創(chuàng)建過程中取消UI界面設(shè)計(jì)文件。

第二步,修改dialog.h文件如下

第三步,打開“新建”菜單,選擇Qt ->“Qt資源文件”,在工程項(xiàng)目中添加資源文件,可任意命名

第四步,在工程目錄中添加文件夾rc,然后將兩個(gè)圖標(biāo)文件放入其中(在線制作ico圖標(biāo)? http://www.bitbug.net/? )

第五步,在button.qrc項(xiàng)目上右擊,在彈出的菜單選擇“添加現(xiàn)有文件”,將rc目錄下的圖標(biāo)分別添加到工程項(xiàng)目中。

第六步,修改dialog.cpp文件的Dialog類構(gòu)造函數(shù):

resize(150,150); //設(shè)置主窗體大小pushButton1 = new QPushButton(this); // 新建按鈕QIcon icon1(":/rc/bitbug_favicon.ico"); // 定義圖標(biāo)對(duì)象pushButton1->setIcon(icon1); // 設(shè)置按鈕圖標(biāo)pushButton1->setGeometry(20,20,70,40);pushButton2 = new QPushButton(this);QIcon icon2(":bitbug_favicon(1).ico");pushButton2->setIcon(icon2);pushButton2->setFlat(true); // 將按鈕設(shè)置為平面顯示pushButton2->setText("Open"); // 設(shè)置按鈕的文本信息pushButton2->setGeometry(20,70,70,40);

點(diǎn)擊運(yùn)行后

單選按鈕、復(fù)選框

單選按鈕用于在眾多選項(xiàng)中選擇一項(xiàng),復(fù)選框用于在眾多選項(xiàng)中同時(shí)選擇多項(xiàng)

單選按鈕,復(fù)選框的使用

第一步,建立一個(gè)基于QWidget類的有UI設(shè)計(jì)界面的應(yīng)用程序。

第二步,在UI設(shè)計(jì)器中放入兩個(gè)復(fù)選框,兩個(gè)標(biāo)簽,兩個(gè)單選按鈕

在本例中,修改單選按鈕和復(fù)選框的objectName和text屬性如下:

兩個(gè)單選按鈕的objectName改為RadioBtn1,RadioBtn2

兩個(gè)單選按鈕的文本test改為男,女

兩個(gè)復(fù)選框的objectName改為CheckBox1,CheckBox2

兩個(gè)復(fù)選框的文本test改為教師,學(xué)生

兩個(gè)標(biāo)簽的objectName改為label,label_2

?

void Widget::on_RadioBtn1_clicked() { // "男"單選按鈕為選中狀態(tài)ui->RadioBtn1->setChecked(true);//label標(biāo)簽顯示相應(yīng)的內(nèi)容ui->label->setText("你選中了男生"); }void Widget::on_RadioBtn2_clicked() {// "女"單選按鈕為選中狀態(tài)ui->RadioBtn2->setChecked(true);//label標(biāo)簽顯示相應(yīng)的內(nèi)容ui->label->setText("你選中了女生"); }void Widget::displayCheckBox() {QString str; //定義字符串//使用條件語句判斷if(ui->CheckBox1->isChecked() && ui->CheckBox2->isChecked()){str = "你選中了教師!\n你選中了學(xué)生!";}else if(ui->CheckBox1->isChecked()){str +="你選中了教師!" ;}else if(ui->CheckBox2->isChecked()){str +="你選中了學(xué)生!";}//將str顯示到label_2標(biāo)簽ui->label_2->setText(str); }void Widget::on_CheckBox1_clicked() {//調(diào)用自定義公有成員函數(shù)this->displayCheckBox(); }void Widget::on_CheckBox2_clicked() {this->displayCheckBox(); }

先告一段落。下一篇實(shí)現(xiàn)一下組合框的使用

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Qt图形界面编程入门(基本窗口及控件)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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