一、窗體
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、虛擬主機、營銷軟件、網站建設、叢臺網站維護、網站推廣。
在Qt中,把窗體(口)叫做Widget。
Widget可以是主窗體(口),也可以是依附在主窗體(口)上的各種控件,作為子窗體,這兩種窗口,分別稱作頂級窗口(top-level widget)和子窗口(sub widget)。
頂級窗口:一個標準的窗口,帶邊框、標題欄、若干按鈕。(獨立)
子窗口:在窗口里面的窗口,例如:按鈕、文本框等控件。(不獨立,隨著父窗口移動)
注意:
1、每個子窗口都有一個父窗口
2、子窗口里面可能包含了若干子窗口,是一層一層的關系。
3、頂級窗口也有父窗口:就是桌面(Desktop Widget),桌面本身也是一個窗口
二、屏幕坐標
描述一個窗口,有兩個性質:
1、位置:窗口左上角的坐標x ,y
2、大小:寬度width,高度height(單位:像素)
比如說,我的顯示屏分辨率為(1600 * 900),那么左上角(top-left corner)的坐標是(0, 0),右下角(bottom-right corner)的坐標是(1599,899) 此外要注意,這里說的“左上角”“右下角”是窗口的有效區(qū)域。不包括上面的標題欄。
三、子窗口的相對坐標
一個子窗口在父窗口中的位置。
四、定義一個窗口
目標:實現(xiàn)一個窗口界面,向其中添加一個按鈕控件。
方法:
1、派生QWidget
2、創(chuàng)建QButton對象,添加到父窗口
3、設置按鈕的大小與位置
步驟:
1、寫一個主窗口:這是一個繼承自QWidget的類(可以手寫,但在VS下,直接在解決方案管理器中右鍵,添加Qt類,更為便捷)
MyWin.h:
#pragma once
#include <QWidget>
#include <QPushButton>
class MyWin : public QWidget
{
Q_OBJECT
public:
MyWin(QWidget *parent); //構造函數(shù),參數(shù)表示當前窗口的父窗口,若為NULL則表示主窗口
~MyWin();
};MyWin.cpp
#include "MyWin.h"
MyWin::MyWin(QWidget *parent)
: QWidget(parent)
{
}
MyWin::~MyWin()
{
}2、寫一個按鍵
MyWin類完善如下:
#pragma once
#include <QWidget>
#include <QPushButton>
class MyWin : public QWidget
{
Q_OBJECT
public:
MyWin(QWidget *parent);
~MyWin();
private:
QPushButton* my_button;
};MyWin.cpp
#include "MyWin.h"
MyWin::MyWin(QWidget *parent)
: QWidget(parent)
{
my_button = new QPushButton(this); //這個button窗口父窗口是this指向的對象,也就是它本身
my_button->setText("change world");
my_button->setGeometry(100, 100, 200, 50);
}
MyWin::~MyWin()
{
//這里delete了一下,但實際上子窗口控件由父窗口管理,因此不必顯示delete
if (my_button != NULL)
{
delete my_button;
}
}main.cpp
#include "Test2_3a_11_25.h"
#include <QtWidgets/QApplication>
#include "MyWin.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWin BaseWindow(NULL);
MyWin DerivedWindow(&BaseWindow);
BaseWindow.show();
return a.exec();
}添加子控件時注意:
1、創(chuàng)建子對象時,必須指定父窗口(作為構造函數(shù)的參數(shù))
2、析構函數(shù):子窗口控件由父窗口管理,因此不必顯示delete
五、更多的控件
QLineEdit:單行文本框
QPlainTextEdit:普通多行文本框
更新了更多的子窗口,現(xiàn)在的代碼如下:



執(zhí)行:

現(xiàn)在有幾個很不雅觀的問題:
1、布局太難
2、父窗口大小調整時,子窗口如何隨著移動?
3、子窗口如何占滿控件?
這些問題,接下來會解決。
尾巴:
我發(fā)現(xiàn)Qt內部的成員對象的命名采用的是大駝峰法,因此在定義自己的對象時,盡量換一種命名風格以避免跟庫中的對象發(fā)生命名沖突
當前文章:【Qt學習筆記】2.窗體Widget&&屏幕坐標&&布局
當前路徑:http://chinadenli.net/article10/jggjdo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、標簽優(yōu)化、商城網站、微信小程序、品牌網站制作、關鍵詞優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)