使用typedef繞過Qt中的坑

2021-08-06 06:02:05 字數 759 閱讀 1962

qt的核心技術訊號槽的靈活使用相信大家都非常熟悉了,這裡主要總結一下在訊號槽中不能隨意使用的地方以及如何使用typedef繞過這些坑。

槽函式的使用和普通的成員函式沒有多大的區別,但是不能將函式指標作為槽函式的引數!比如:

private slots:

void

myslot(int (*function)(char *p, int *n), bool b);

上述槽函式中使用了函式指標int (*function)(char *p, int *n)作為槽函式myslot的第乙個引數,這是不行的。如果非要使用函式指標作為引數應該如何通過編譯呢?答案是使用typedef

typedef int (*function)(char *p, int *n) function(char *p, int *n)

...private slots:

void

myslot(int

function(char *p, int *n), bool b);

如果槽函式的引數含有模板類,即使編譯的時候不報錯,執行的時候也會產生錯誤。同樣,使用typedef可以繞過:

typedef pair

pair;

public slots:

void myslot(pair mypair);

Qt中qss的使用

qt支援css樣式表,它是網頁中用來控制顯示的指令碼,功能豐富,可以很方便的實現各種顯示效果。如果想進一步了解其語法以及使用,可訪問www.w3school.com.cn。好在之前在寫 比較熟悉。給乙個控制項新增樣式表,只需呼叫其setstylesheet即可,傳入將樣式內容作為字串傳入。一般為了方...

QT中foreach的使用

摘自 qingyumini 在標準c 中,並沒有foreach關鍵字。foreach variables container 關鍵字是qt對c 的乙個擴充套件,主要用於按順序歷經容器 container 中的物件。其用法為 qlinklistlist qstring str foreach str ...

Qt 中Qtimer的使用

1.定時器timer類 建立乙個qtimer物件,將訊號timeout 與相應的槽函式相連,然後呼叫start 函式。接下來,每隔一段時間,定時器便會發出一次timeout 訊號。qtimer timer new qtimer this connect timer,signal timeout th...