qt開發雜談

2021-06-28 09:15:46 字數 2517 閱讀 4601

1:qt中訊號和槽有一種自動連線方式

void on__();

如果槽的命名是這樣的話:void on__();

就會自動將widget name中的訊號signal name和這個槽void on__()鏈結起來。

例如:void on_okbutton_clicked();系統就會自動將okbutton類中的訊號clicked和on_okbutton_clicked這個槽函式連線。

當你觸發okbutton類的clicked時,這個槽函式就進行處理(注意這個button圖示的object名字必須寫成okbutton,不是button圖示顯示的名字).

2:   main_widget=new mainwidget(this)

main_widget=new mainwidget()

這兩種申請方式的區別。

例如:mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent),

ui(new ui::mainwindow)

(1)main_widget=new mainwidget(this)申請表明你通過建構函式傳遞引數,你所用的物件就是你傳遞過來的物件,在他的基礎上,新增main_widget所有的功能。

比如我已經在mainwindow

-》setui建構函式中已經豐富了widget的視窗,如果我以這種方式申請,我就是在mainwindow

-》setui

-》widget

的視窗的基礎上,加我main_widget所定義的視窗成員。

(2)main_widget=new mainwidget()

申請表明你會申請乙個新的物件類,可能和你的this(mainwindow

)有共同的繼承類,但是它是在新物件上進行的操作,你的mainwidget

是在你的新的物件類下新增它有的功能。

如果以new mainwidget()

方式,我就不是在mainwindow

-》setui

-》widget

的視窗的基礎上

,而是重新生成乙個widget,在我生成的空白的widget之下,新增我main_widget

所定義的視窗成員。

3: ui->setupui(this);

main_widget=new mainwidget(this);

mainwindow::setcentralwidget(main_widget);

main_widget->hide(); 和

ui->setupui(this);

main_widget=new mainwidget( );

mainwindow::setcentralwidget(main_widget);

main_widget->hide();

效果一樣,就是重新設定了centralwidget

,把ui->setupui中已經設定的centralwidget,覆蓋掉了。

ui->setupui(this);

main_widget=new mainwidget(this);

main_widget->hide();

這種方式,使得把ui->setupui(this)

中設定的centralwidget

和通過構造main_widget類,把兩個定義的widget視窗,都

設為mainwindow中的centralwidget

。所以看到的效果是兩個widget的重疊。如果這次想看到之中乙個可以main_widget->hide()另乙個,同樣想看到另乙個可以show這個,hide另外乙個

4:c++中一般對於有的函式引數在宣告的時候,就給出預設值,這樣,你可以在傳實參的時候,可以不給這個引數傳實參,它預設的就是你的預設值,也就不會出現編譯錯誤。如果不是這樣宣告的話,就必須給函式傳所有的實參,否則會提示編譯問題。

5:訊號和槽函式的定義,其函式引數一般要就一致(如果訊號函式沒有引數,一般要求相連的槽函式也不能有引數。如果訊號函式是某個型別的,相連的槽函式也是相應型別的),否則編譯時會提示接受者和傳送者引數衝突。

例如   connect: incompatible sender/receiver arguments

6:qt下寫有關socket通訊方面程式,應包含#include

但是make時出現          error: qtnetwork: no such file or directory

具體操作步驟如下

(1): qmake -project

(2): 手工新增 qt += network

(3): qmake

(4): make

7:   qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8"));

一種提供輸出中文的方式,但是可能提供的字型檔不同,給codecforname提供的名字不同(utf-8

,gb2312等等)

所以有時開發過程中,會出現輸出中文亂碼,或者是輸出小框。大多都是提供的字型檔與你的輸入法不符。

qt程式設計問題雜談

1 乙個訊號可以連線多個槽,觸發一次訊號就發起了多個槽操作。2 qt下兩個執行緒之間可以用訊號和槽傳遞資料,但是當乙個執行緒一直迴圈執行,等待另乙個執行緒發來的資料的時候,當另乙個執行緒觸發了這個訊號時,如果這個執行緒一直輪循,其實屬於此執行緒的這個槽函式是不會被觸發的。3 qt下實現執行緒的函式是...

iphone開發雜談

很久沒看到這麼好的文章了,此文摘自stackoverflow的翻譯,獻給iphone開發的同仁們,同時也給自己做個筆記 192個加分的回答 有些初學時的做法,現在我認為是不標準的。2 說起來私有,我傾向於把似有方法定義在.m檔案裡,放在乙個私有的category內,如下 import myclass...

Qt雜談1 聊聊Qt官方認證

考試題目都是選擇題,不會讓你敲 啥的,嗯,就是這樣簡單高效。考試要點內容還是挺多的,這裡就不一一列出了,看官方的文件 文中提到,考試可以按任何順序進行,但在qt和qml基本考試通過之前,考生不能獲得任何乙個專家證書。因此,專家證書也需要qt和qml開發者證書。也就是說考試可以不分順序,但是你想拿專家...