Qt图形界面编程入门(基本窗口及控件)
基本窗口類QWidget
QWidget是所有窗體部件的基類,例如對話框類,主窗體類,以及其他諸如按鈕,編輯框,標(biāo)簽等等都是由QWidget派生得到,QWidget擁有的方法往往都可以在其他子類中使用。
窗體的幾何尺寸分為包含邊框和標(biāo)題、不包含邊框和標(biāo)題兩種。
以下是常用函數(shù)
(1)包括窗框(即整個窗口)的函數(shù)。
x(),y(),pos():獲取左上角坐標(biāo)
frameGeometry():獲取窗體尺寸(返回一個矩形QRect)
move():移動窗體到某個位置。
(2)不包括窗體(即客戶區(qū)域)(返回一個矩形QRect)
width(),heigh():獲取客戶區(qū)寬度、高度
setGeometry():設(shè)置窗體在屏幕中的位置。
窗體幾何尺寸的設(shè)置和獲取
首先我們建立一個基于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)行上面的程序會顯示一個窗口,如圖
它的客戶區(qū)左上角距離屏幕左上角邊界均為50,客戶區(qū)的長和寬均為200
這里的(41,12)是窗體框架左上角的坐標(biāo),它在客戶區(qū)的左上角(50,50)的左上方。而顯示器左上角是原點(diǎn)。
setGeometry函數(shù)設(shè)置客戶區(qū)在屏幕上的位置及其寬度、高度。
窗口標(biāo)題及大小控制
首先建立一個基于QWidget的有UI設(shè)計(jì)界面的Qt Widgets Application應(yīng)用。
然后修改Widget.cpp文件的構(gòu)造函數(shù)如下:
窗口控件類概覽
標(biāo)簽
標(biāo)簽(QLabel)一般用于顯示簡單的文本。例如:
QLabel *label = new QLabel(this); label->setGemoetry(10,10,150,80); label->setText("Label"); //設(shè)置文本對齊方式,多個參數(shù)用 | 分隔 label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);標(biāo)簽文本對齊方式定義如下:
AlignTop:將文本添加到QLabel對象的上部
AlignButton:將文本添加到QLabel對象的下部
AlignLeft:沿著QLabel對象的左邊添加文本
AlignRight:沿著QLabel對象的右邊添加文本
AlignHCenter:將文本添加到QLabel對象水平中心的位置
AlignVCenter:將文本添加到QLabel對象的垂直中心位置
用標(biāo)簽顯示位圖
第一步,建立一個基類位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);//路徑不同,圖片屬性不同,請自行修改路徑和屬性//QImage image("e:/img.png");pTag->setPixmap(QPixmap::fromImage(image));pTag->setGeometry(0,0,image.width(),image.height());w.show();return a.exec();這個例子用QImage對象載入E盤根目錄下的png文件,再利用QPixmap::formImage靜態(tài)函數(shù)將png格式轉(zhuǎn)換為xpm格式,然后用setPixmap函數(shù)設(shè)置標(biāo)簽位圖。
按鈕
對于普通按鈕而言,可設(shè)置圖標(biāo),文字,顯示狀態(tài)等。
按鈕的使用
第一步,建立一個基類為QDialog的應(yīng)用,在創(chuàng)建過程中取消UI界面設(shè)計(jì)文件。
第二步,修改dialog.h文件如下
第三步,打開“新建”菜單,選擇Qt ->“Qt資源文件”,在工程項(xiàng)目中添加資源文件,可任意命名
第四步,在工程目錄中添加文件夾rc,然后將兩個圖標(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)對象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)中同時選擇多項(xiàng)
單選按鈕,復(fù)選框的使用
第一步,建立一個基于QWidget類的有UI設(shè)計(jì)界面的應(yīng)用程序。
第二步,在UI設(shè)計(jì)器中放入兩個復(fù)選框,兩個標(biāo)簽,兩個單選按鈕
在本例中,修改單選按鈕和復(fù)選框的objectName和text屬性如下:
兩個單選按鈕的objectName改為RadioBtn1,RadioBtn2
兩個單選按鈕的文本test改為男,女
兩個復(fù)選框的objectName改為CheckBox1,CheckBox2
兩個復(fù)選框的文本test改為教師,學(xué)生
兩個標(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ān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Qt图形界面编程入门(基本窗口及控件)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是产业内贸易理论 国际经济学界产生了
- 下一篇: 建投华科是央企吗?