日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

QA-3:

發(fā)布時(shí)間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QA-3: 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Q:這樣創(chuàng)建的按鈕和在ui里拖動(dòng)創(chuàng)建的有什么區(qū)別,為什么ui里(edit signals/slots)的我看不到代碼

A:基本沒(méi)有區(qū)別。UI 文件是基于 XML 的描述性文件。Qt 使用特殊的編譯器(uic)將 UI 文件翻譯成 C++ 源代碼,然后再進(jìn)行編譯。使用 UI 文件可以進(jìn)行快速開(kāi)發(fā),而直接使用代碼創(chuàng)建則更方便進(jìn)行控制

?

Q:

啟動(dòng)軟件后,東西全部擠疊在在一起了。
還有一個(gè)警告:QWidget::setLayout: Attempting to set QLayout “” on MainWindow “”, which already has a layout

A:

注意代碼中是QWidget window;
你大概是用成了QMainWindow window

QMainWindow 有自己的布局管理器,所以一般是把你的布局放在一個(gè) QWidget 上,然后將這個(gè) QWidget 設(shè)置為 centralWidget

?QMainWindow 的確是繼承自 QWidget,但是它同時(shí)添加了自己的 layout,正因?yàn)橛?layout 的存在,所以你需要使用 setCentralWidget() 函數(shù)把一個(gè) QWidget 設(shè)置為中心的組件,而不是把一個(gè)個(gè)的子組件用自己的 layout 添加進(jìn)去(因?yàn)?QMainWindow 已經(jīng)有了默認(rèn)的 layout,你自己的 layout 才會(huì)不起作用)。

Q:connect函數(shù)第二個(gè)參數(shù)像這樣加個(gè)括號(hào)就會(huì)報(bào)錯(cuò):call to non-static member function without an object argument。請(qǐng)教是什么原因,C++學(xué)的不扎實(shí)還請(qǐng)見(jiàn)諒

QObject::connect(&button, &(QPushButton::clicked), &QApplication::quit);

A:這里是取函數(shù)指針,加上括號(hào)后編譯器需要先執(zhí)行括號(hào)里面的語(yǔ)句,而這個(gè)語(yǔ)句是非法的,所以報(bào)錯(cuò)。函數(shù)的名稱就是函數(shù)的地址,但是在 C++ 中,取函數(shù)地址必須使用 & 運(yùn)算符。&究竟是引用還是取址,是根據(jù)上下文來(lái)判斷的。引用的話是必須初始化的

Q:QMetaMethod類型是用來(lái)做啥用的? A:  QMetaMethod 用于實(shí)現(xiàn)反射機(jī)制,即利用函數(shù)名調(diào)用一個(gè)函數(shù)這類功能. 這個(gè)一般是一些高級(jí)用法,比如 Qt 4 中的信號(hào)槽,實(shí)際是用兩個(gè)字符串進(jìn)行關(guān)聯(lián),即 Qt 會(huì)記錄下,當(dāng)信號(hào) aSIGNAL 發(fā)出時(shí),調(diào)用 aSLOT 函數(shù)。此時(shí),aSIGNAL 和 aSLOT 在 Qt 內(nèi)部以字符串的形式存儲(chǔ)。當(dāng)運(yùn)行時(shí),Qt 發(fā)現(xiàn)了 aSIGNAL 信號(hào),則找到其對(duì)應(yīng)的 aSLOT 字符串,此時(shí)就利用 QMetaMethod 去調(diào)用這個(gè)字符串對(duì)應(yīng)的函數(shù)。如果感興趣,可以詳細(xì)了解下反射機(jī)制(不僅是 Qt,可以看看 Java 之類的,會(huì)更清晰一些,因?yàn)?C++ 語(yǔ)言級(jí)別的反射比較弱,所以 Qt 按照 Java 的方式做了增強(qiáng))。

Tips:

一個(gè)程序中,在棧上分配太多對(duì)象可能會(huì)導(dǎo)致棧空間不足,從而程序崩潰。所以要適當(dāng)?shù)挠枚寻 ?/span>

轉(zhuǎn)載于:https://www.cnblogs.com/AbsolutelyPerfect/p/7770734.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的QA-3:的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。