QT學習筆記(三)——QT中的座標系統及視窗位置,大小配置

馬大哈先生發表於2018-08-05

一、QWidget類中的座標系統成員函式

Qt中的幾何座標以左上角為原點,其中的GUI元件以左上角進行定位

1.1 表示視窗左上角位置和客戶區的長寬

——x()//視窗左上角的橫座標

——y()//視窗左上角的縱座標

——width() //表示客戶區的寬度

——height()//表示客戶區的高度

1.2 表示客戶區左上角位置客戶區長寬

——geometry()//客戶區的位置資訊:geometry().x(),geometry().y()客戶區左上角座標;width、height表示客戶區的寬度和高度

  •        x(),y(),width(),height()

1.3 表示視窗左上角位置視窗的長寬

——frameGeometry()//成員函式,表示視窗的高度和寬度

  •        x(),y(),width(),height()

注1:除錯時需要先呼叫#include <QDebug>標頭檔案

注2:QWidget提供的x,y表示的座標與frameGeometry().x(),frameGeometry().y()的相同。

width(),height()表示的內容和geometry().width(),geometry().height()的相同。

提供三套座標函式的目的是為了方便跨平臺設計

#include "show.h"
#include <QtWidgets/QApplication>
#include <qdebug.h>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QWidget w;//生成QWidget物件,頂級元件

	w.resize(400, 400);//設定視窗中客戶區的長寬
	w.move(10, 10);//設定視窗的位置
	w.show();//這個要放在配置視窗幾何資訊程式碼的上面

	qDebug() << "QWidget:"; //輸出qdebug對應的字串
	qDebug() << w.x();
	qDebug() << w.y();
	qDebug() << w.width();
	qDebug() << w.height();

	qDebug() << "QWidget::geometry()";
	qDebug() << w.geometry().x();
	qDebug() << w.geometry().y();
	qDebug() << w.geometry().width();
	qDebug() << w.geometry().height();

	qDebug() << "QWidget::frameGeometry()";
	qDebug() << w.frameGeometry().x();
	qDebug() << w.frameGeometry().y();
	qDebug() << w.frameGeometry().width();
	qDebug() << w.frameGeometry().height();

	return a.exec();
}

執行結果:

注:geometry()和frameGeometry()中的幾何資料必須在show()呼叫後才有效!!!

        因為qt在不同的平臺下,都能生成圖形介面,但視窗外觀有差異。所以在視窗出現前,我們不知道這段程式碼是在什麼平臺下編譯的,所以只有在視窗出現在相應平臺下時,才能得到有效的幾何資料。

二、視窗部件的大小設定

2.1 QWidget類提供了成員函式:

——改變視窗部件的大小

        void resize (int w, int h); //w,h表示視窗區的長寬,其取值是有限度的,window下,視窗的最小值是116*116.取小於這個值的,系統也會預設生成116*116的視窗。所以在建立專案時要考慮到不同系統的視窗部件長寬限制。

        void resize(const QSize &);

                                                                   

——改變視窗部件的位置

        void move (int x, int y);

        void move (const QPoint &);

三、QPushButton元件

作用:

    1. 用於接受使用者點選事件;2.能夠顯示提示性字串;3.是功能性元件,需要父元件作為容器; 4. 能夠在父元件中進行定位

QWidget w;                          //生成QWidget物件,頂級元件

QPushButton b(&w);            //生成QPushButton物件,其父元件為QWidget

 

b.setText("Button");             //設定顯示的字串

b.move(10,10);                    //移動到座標(10,10)

b.resize(10,25);                   //設定大小width = 10,height = 25

注:需要先在程式中新增#include <QPushButton>標頭檔案

#include "show.h"
#include <QtWidgets/QApplication>
#include <qdebug.h>
#include <qpushbutton.h>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QWidget w;  //生成QWidget物件,頂級元件


	QPushButton b(&w);//生成QPushButton物件,其父元件為QWidget
	b.setText("Button");//設定按鍵顯示的字串
	b.move(10, 10);//移動按鈕圖案到座標(10,10)位置
	b.resize(100, 25);//設定按鈕大小width = 10,height = 25

	QPushButton b1(&w);//生成QPushButton物件,其父元件為QWidget
	b1.setText("Button1");//設定按鍵顯示的字串
	b1.move(140, 10);//移動按鈕圖案到座標(10,10)位置
	b1.resize(100, 25);//設定按鈕大小width = 10,height = 25

	QPushButton b2(&w);//生成QPushButton物件,其父元件為QWidget
	b2.setText("Button2");//設定按鍵顯示的字串
	b2.move(10, 100);//移動按鈕圖案到座標(10,10)位置
	b2.resize(100, 25);//設定按鈕大小width = 10,height = 25
	
	
	w.show();//顯示視窗,要先配置視窗內容資訊,再顯示視窗
	return a.exec();
}

注:要注意w.show();的位置,一般放在視窗內部配置的程式碼下面,即先配置視窗內部,再顯示。

四、QLabel元件

作用:

1. 能夠顯示提示性字串;2.是功能性元件,需要父元件作為容器;3. 能夠在父元件中進行定位

QWidget w;                          //生成QWidget物件,頂級元件

QLabel *lb = new QLabel(&w);            //生成QPushButton物件,其父元件為QWidget

 

lb->setText("Button");             //設定顯示的字串

lb->setGeometry(QRect(10, 10, 150, 30));    //移動到座標(10,10),長為150,寬為30的矩形

lb->setFrameStyle(QFrame::Panel | QFrame::Sunken); //設定外觀                 

看不太懂的參考 https://blog.csdn.net/xgbing/article/details/7762331

 

相關文章