QT學習第2天

2022-03-28 09:11:39 字數 3064 閱讀 8028

回顧:

1.構建乙個qt工程步驟

(1)qmake -project

(2)qmake

(3)make

2.兩個常用的元件

qlabel 標籤

qpushbutton 按鈕

--------------------------------------

四 容器視窗(父視窗)

1.父視窗可以停靠其他元件,如果乙個元件在建立時指定父視窗,那麼就將停靠在父視窗上,如果不指定則飄在外面形成獨立的窗體.

2.常用的父視窗類

qwidget ==>絕大多數圖形相關元件都是它的子類

qmainwindow(用的比較多,是qwidget的子類)

qdialog(用的比較多,是qwidget的子類)

3.qwidget的兩個常用成員函式

(1)調整大小

resize(int x,int y); //引數是解析度

(2)移動位置

move(int x,int y);

五 訊號和槽的其他用法

1.一般情況訊號和槽引數純虛型別要相同

eg:qobject::connect(a,signal(sigfunc(int,string)),b,slot(slotfunc(int,string))); //ok

qobject::connect(a,signal(sigfunc(int,string)),b,slot(slotfunc(string,int))); //no

2.可以帶有預設引數

eg:qobject::connect(a,signal(sigfunc(int)),b,slot(slotfunc(int,string=「"))); //ok

3.訊號函式引數可以多於槽函式引數,多餘的引數將被忽略

eg:qobject::connect(a,signal(sigfunc(int,string)),b,slot(slotfunc(int))); //ok

qobject::connect(a,signal(sigfunc(int)),b,slot(slotfunc(int,string))); //no

4.乙個訊號可以被連線到多個槽函式

eg:qobject::connect(a,signal(sigfunc(int)),b1,slot(slotfunc(int))); //ok

qobject::connect(a,signal(sigfunc(int)),b2,slot(slotfunc(int))); //ok

注: 當a傳送訊號sigfunc,b1/b2的槽函式都會被執行,執行的順序不確定

5.多個訊號可以連線到同乙個槽函式

qobject::connect(a1,signal(sigfunc(int)),b,slot(slotfunc(int))); //ok

qobject::connect(a2,signal(sigfunc(int)),b,slot(slotfunc(int))); //ok

注: 無論a1還是a2發出訊號,b的槽函式都會被執行

案例《事件同步》

1.qsilder    滑塊類

qslider(qwidget *parent = q_nullptr)

qslider(qt::orientation orientation, qwidget *parent = q_nullptr)

qt::vertical 垂直的

qt::horizontal 水平

void setrange(int min,int max)[slots]; //設定滑動範圍

void setvalue(int)[slots];    //設定當前值

void valuechange(int value)[signal]; //值改變訊號

void setpagestep(int);//設定頁步距

2.qspinbox 選值框類(微調框)

qspinbox(qwidget *parent = q_nullptr);

void setrange(int minimum, int maximum);//設定選值範圍

void setvalue(int val)[slots];//設定當前值

void valuechanged(int i)[signal];//值改變訊號

六 物件導向的qt程式設計

1.基於物件的qt程式設計(不建議)

2.物件導向的qt程式設計

《案例》加法計算器

class calculatedialog:public qdialog

案例**如下:

#ifndef        __calculatordialog_h

#define __calculatordialog_h#include

#include

#include

#include

//輸入文字的元件

#include //

雙精度的校驗器

#include //

水平布局器

class calculatordialog:public

qdialog;

#endif

//__calculatordialog_h

calculatordialog.h

#include "

calculatordialog.h"//

建構函式中初始化ui介面

calculatordialog::calculatordialog(void

)void calculatordialog::enablecalcbutton(void

)

else

}void calculatordialog::calcclicked(void

)

calculatordialog.cpp

#include "

calculatordialog.h

"#include

calculatordialog dialog;

dialog.show();

return

}

calculator.cpp

Python學習第2天

0 主要有3點需要改進。1 首先是猜的值大了或者小了,需要引入if else 語句。2 其次是不要只給一次機會,可以給機會到猜對或者給一定次數的機會,那麼需要引入while。3 最後是產生的數字最好是隨機的不那麼好猜,引入了random模組,採用其中的randint函式產生了隨機值。0 介紹了三個層...

Qt學習第6天 xml 筆記

1 mikename female 18score stu 2 jackname male 20score stu info 實現如下效果 xml version 1.0 encoding utf 8 日銷售清單 日期 date 2020 05 19 時間 time 10 30 58 廠家 二汽神龍...

python第25天 學習python第25天

今天是在尚學堂學習python第25天今天學習了使用者管理,許可權管理 使用者管理 1.使用者的登入與退出 語法 mysql h hostname p port u username p dbname e h hostname 指定要連線mysql的主機名或者ip hostname就是具體的主機名或...