QT 無序基礎(一)

2021-09-11 22:44:14 字數 4013 閱讀 8821

作為新接觸qt的人,在學習的過程中做下的一些記錄,留以日後。

以qwidget,qdialog,qmainwindow。qwidget作為qdialog,qmainwindow的父類,其面向所有使用者介面的物件;qdialog取其dialog會話之意,作為對話窗基類;qmainwindow以其mainwindow主視窗之名提供若下圖所示的乙個有選單條、錨接視窗(例如工具條)和乙個狀態條的主應用程式視窗

布局分qgridlayout,qhboxlayout,qvboxlayout

qgridlayout為柵格布局,主要用法,例:

宣告

#include <qgridlayout>

將乙個文字框置入某一位置

qlabel *label=new qlabel(tr(「柵格測試」));

qgridlayout *mainlayout=new qgridlayout();

mainlayout->addwidget(label,0,0,1,1);

有一點值得注意,採用gridlayout,在addwidge括號中實體為(所要置入的控制項,位置行,位置列,所占行,所佔列)以及隱去的本在所佔列之後的qt::alignment = 0對齊方式。

qhboxlayout為水平布局,顧名思義,例:

宣告

#include <qhboxlayout>

將label置於同一水平位置

qlabel *label1=new qlabel(tr(「水平測試」));

qlabel *label2=new qlabel(tr(「水平測試」));

qlabel *label3=new qlabel(tr(「水平測試」));

qhboxlayout *mainlayout=new qhboxlayout();

mainlayout->addwidget(label1);

mainlayout->addwidget(label2);

mainlayout->addwidget(label3);

所得即為三個label處於同一行的布局之中

qvboxlayout為垂直布局,例:

宣告

#include <qvboxlayout>

將label置於同一垂直位置

qlabel *label1=new qlabel(tr(「垂直測試」));

qlabel *label2=new qlabel(tr(「垂直測試」));

qlabel *label3=new qlabel(tr(「垂直測試」));

qvboxlayout *mainlayout=new qvboxlayout();

mainlayout->addwidget(label1);

mainlayout->addwidget(label2);

mainlayout->addwidget(label3);

所得即為三個label處於同一列的布局之中

作為布局者,將上三種合理配合可以派出整潔的布局,例:

宣告

#include <qvboxlayout>

#include <qhboxlayout>

#include <qgridlayout>

#define p 「e:/qtwork/qwork/login.png」

標頭檔案定義

private:

qlabel *picture,*label1,*label2;

qlineedit *id,*psw;

qpushbutton *loginbtn,*regbtn;

qvboxlayout *mainlayout,*right;

qhboxlayout *bottom;

qgridlayout *left;

cpp檔案定義

picture=new qlabel();

qpixmap icon;

icon.load§;

picture->setpixmap(icon);

label1=new qlabel();

label1->settext(tr(「使用者名稱:」));

label2=new qlabel();

label2->settext(tr(「密 碼:」));

id=new qlineedit();

psw=new qlineedit();

psw->setechomode(qlineedit::password); //設定密碼框輸入時顯示為圓點

loginbtn=new qpushbutton();

loginbtn->settext(tr(「登 陸」));

regbtn=new qpushbutton();

regbtn->settext(tr(「注 冊」));

left=new qgridlayout(); //設定左下控制項位置

left->addwidget(label1,1,0,1,1);

left->addwidget(id,1,1,1,3);

left->addwidget(label2,2,0,1,1);

left->addwidget(psw,2,1,1,3);

right=new qvboxlayout(); //設定右下控制項位置

right->addwidget(loginbtn);

right->addwidget(regbtn);

bottom=new qhboxlayout(); //設定底部控制項位置

bottom->addlayout(left);

bottom->addlayout(right);

mainlayout=new qvboxlayout(this); //設定總體控制項位置

mainlayout->addwidget(picture);

mainlayout->addlayout(bottom);

得到的顯示結果:

正規表示式附錄:

正則用及qregexp。

以setpattern為例:

宣告

#include <qregexp>

以註冊資訊為例,定下id格式為任意兩位字母加3位以內的數字,psw格式為6位以內數字的需求則可通過正則表達來實現

qregexp norid,norpsw;

norid.setpattern("[a-za-z][a-za-z]\d");

norpsw.setpattern("\d");

時間原因,上述三個部分都還有很多內容,布局控制項間距,控制項與視窗邊距,正則的其他用法等等今天著實不能再寫下去了,之後的空餘時間中我會繼續補上。

Qt下使用SQLite基礎(一)

通常使用sqlite3這個工具使用資料庫。常用命令 sqlite3 mydatabase.db 建立乙個資料庫,檔名稱為mydatabase tables 顯示當前資料庫中,所有表有哪些 create table userinfo username,password 建立乙個表,名稱是userinf...

QT5基礎操作(一)

說明 框上面是對操作描述,框內部具體操作 執行時介面字型顯示不全 解析度問題 setattribute qt aa enablehighdpiscaling 方式建立元件 在.件中private 宣告指標,在.cpp檔案中new例項化物件,後可在cpp中以指標方式使用 方式進行元件布局 其實這步可以...

QT 基礎語法

函式 定義 資料型別 函式名 引數列表 函式呼叫,函式遞迴,函式引數,函式返回值 型別指標和值 函式指標,變參函式 函式過載 函式名相同,函式引數列表不同 編譯器檢查函式的時候同時檢查函式名和引數列表 強型別 指標,引用賦值型別必須一致 add int int add double,double i...