www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式大雜燴
[導(dǎo)讀]關(guān)注「Linux大陸」,一起進(jìn)步!大家好,我是ZhengN。之前分享了一篇QT基礎(chǔ)實(shí)踐文章:?易懂|手把手教你編寫你的第一個(gè)上位機(jī),后臺數(shù)據(jù)反饋不錯(cuò),很多人都喜歡這篇QT實(shí)踐文章,這次就來大家分享一份十分硬核的QT資料及QT開發(fā)經(jīng)驗(yàn)貼。原文見gitee倉庫:https://git...

關(guān)注Linux大陸」,一起進(jìn)步!

大家好,我是ZhengN。之前分享了一篇QT基礎(chǔ)實(shí)踐文章:?易懂 | 手把手教你編寫你的第一個(gè)上位機(jī),后臺數(shù)據(jù)反饋不錯(cuò),很多人都喜歡這篇QT實(shí)踐文章,這次就來大家分享一份十分硬核的QT資料及QT開發(fā)經(jīng)驗(yàn)貼。原文見gitee倉庫:

https://gitee.com/newgolo/qtkaifajingyan

一、QT學(xué)習(xí)資料

1、相關(guān)書籍

(1)C 入門書籍推薦《C primer plus》,進(jìn)階書籍推薦《C primer》。

(2)Qt入門書籍推薦霍亞飛的《Qt Creator快速入門》,Qt進(jìn)階書籍推薦官方的《C GUI Qt4編程》,qml書籍推薦《Qt5編程入門》。

(3)強(qiáng)烈推薦程序員自我修養(yǎng)和規(guī)劃系列書《大話程序員》《程序員的成長課》《解憂程序員》,受益匪淺,受益終生!

2、Qt論壇 個(gè)人博客 網(wǎng)站 群

名稱網(wǎng)址
QQ學(xué)習(xí)群Qt交流大會群 853086607 Qt技術(shù)交流群 46679801 Qt進(jìn)階之路群 734623697
QtWidget開源demo集合?https://gitee.com/feiyangqingyun/QWidgetDemo
QtQuick/Qml開源demo集合?https://gitee.com/jaredtao/TaoQuick
qtcn?http://www.qtcn.org
豆子的空間?https://www.devbean.net
yafeilinux?http://www.qter.org
一去二三里?http://blog.csdn.net/liang19890820
烏托邦2號?http://blog.csdn.net/taiyang1987912
foruok?http://blog.csdn.net/foruok
jason?http://blog.csdn.net/wsj18808050
朝十晚八?http://www.cnblogs.com/swarmbees
BIG_C_GOD?http://blog.csdn.net/big_c_god
公孫二狗?https://qtdebug.com/qtbook
雨田哥?https://blog.csdn.net/ly305750665
鄭天佐?https://blog.csdn.net/zhengtianzuo06
寒山-居士?https://blog.csdn.net/esonpo
feiyangqingyun?https://blog.csdn.net/feiyangqingyun
前行中小豬?http://blog.csdn.net/goforwardtostep
濤哥的知乎專欄?https://zhuanlan.zhihu.com/TaoQt
Qt君?https://blog.csdn.net/nicai_xiaoqinxi
Qt老外視頻教程?http://space.bilibili.com/2592237/#!/index
Qt維基補(bǔ)充文檔?https://wiki.qt.io/Main
Qt源碼查看網(wǎng)站?https://code.woboq.org/qt5
Qt官方下載地址?https://download.qt.io
Qt官方下載新地址?https://download.qt.io/new_archive/qt/
Qt國內(nèi)鏡像下載地址?https://mirrors.cloud.tencent.com/qt
Qt安裝包下載地址?http://qthub.com/download/ (超過1000多個(gè),由Qt君整理)
精美圖表控件QWT?http://qwt.sourceforge.net/
精美圖表控件QCustomPlot?https://www.qcustomplot.com/
免費(fèi)圖標(biāo)下載?http://www.easyicon.net/
圖形字體下載?https://www.iconfont.cn/
漂亮界面網(wǎng)站?https://www.ui.cn/

二、QT開發(fā)經(jīng)驗(yàn)總結(jié)

  1. 當(dāng)編譯發(fā)現(xiàn)大量錯(cuò)誤的時(shí)候,從第一個(gè)看起,一個(gè)一個(gè)的解決,不要急著去看下一個(gè)錯(cuò)誤,往往后面的錯(cuò)誤都是由于前面的錯(cuò)誤引起的,第一個(gè)解決后很可能都解決了。

  2. 定時(shí)器是個(gè)好東西,學(xué)會好使用它,有時(shí)候用QTimer::singleShot可以解決意想不到的問題。

  3. 打開creator,在構(gòu)建套件的環(huán)境中增加MAKEFLAGS=-j8,可以不用每次設(shè)置多線程編譯。珍愛時(shí)間和生命。新版的QtCreator已經(jīng)默認(rèn)就是j8。

  4. 如果你想順利用QtCreator部署安卓程序,首先你要在AndroidStudio 里面配置成功,把坑全部趟平。

  5. 很多時(shí)候找到Qt對應(yīng)封裝的方法后,記得多看看該函數(shù)的重載,多個(gè)參數(shù)的,你會發(fā)現(xiàn)不一樣的世界,有時(shí)候會恍然大悟,原來Qt已經(jīng)幫我們封裝好了。

  6. 可以在pro文件中寫上標(biāo)記版本號 ico圖標(biāo)(Qt5才支持)

VERSION??=?2020.10.25
RC_ICONS?=?main0.ico
  1. 管理員運(yùn)行程序,限定在MSVC編譯器。
QMAKE_LFLAGS? =?/MANIFESTUAC:"level='requireAdministrator'?uiAccess='false'"?#以管理員運(yùn)行
QMAKE_LFLAGS? =?/SUBSYSTEM:WINDOWS,"5.01"?#VS2013?在XP運(yùn)行
  1. 運(yùn)行文件附帶調(diào)試輸出窗口 CONFIG = console pro

  2. 繪制平鋪背景QPainter::drawTiledPixmap,繪制圓角矩形QPainter::drawRoundedRect(),而不是QPainter::drawRoundRect();

  3. 移除舊的樣式

//移除原有樣式
style()->unpolish(ui->btn);
//重新設(shè)置新的該控件的樣式。
style()->polish(ui->btn);
  1. 獲取類的屬性
const?QMetaObject?*metaobject?=?object->metaObject();
int?count?=?metaobject->propertyCount();
for?(int?i?=?0;?i?????QMetaProperty?metaproperty?=?metaobject->property(i);
????const?char?*name?=?metaproperty.name();
????QVariant?value?=?object->property(name);
????qDebug()?<}
  1. Qt內(nèi)置圖標(biāo)封裝在QStyle中,大概七十多個(gè)圖標(biāo),可以直接拿來用。
SP_TitleBarMenuButton,
SP_TitleBarMinButton,
SP_TitleBarMaxButton,
SP_TitleBarCloseButton,
SP_MessageBoxInformation,
SP_MessageBoxWarning,
SP_MessageBoxCritical,
SP_MessageBoxQuestion,
...
  1. 根據(jù)操作系統(tǒng)位數(shù)判斷加載
win32?{
????contains(DEFINES,?WIN64)?{?DESTDIR?=?$${PWD}/../../bin64
????}?else?{?DESTDIR?=?$${PWD}/../../bin32?}
}
  1. Qt5增強(qiáng)了很多安全性驗(yàn)證,如果出現(xiàn)setGeometry: Unable to set geometry,請將該控件的可見移到加入布局之后。

  2. 可以將控件A添加到布局,然后控件B設(shè)置該布局,這種靈活性大大提高了控件的組合度,比如可以在文本框左側(cè)右側(cè)增加一個(gè)搜索按鈕,按鈕設(shè)置圖標(biāo)即可。

QPushButton?*btn?=?new?QPushButton;
btn->resize(30,?ui->lineEdit->height());
QHBoxLayout?*layout?=?new?QHBoxLayout(ui->lineEdit);
layout->setMargin(0);
layout->addStretch();
layout->addWidget(btn);
  1. 對QLCDNumber控件設(shè)置樣式,需要將QLCDNumber的segmentstyle設(shè)置為flat。

  2. 巧妙的使用findChildren可以查找該控件下的所有子控件。findChild為查找單個(gè)。

//查找指定類名objectName的控件
QList?widgets?=?parentWidget.findChildren("widgetname");
//查找所有QPushButton
QList?allPButtons?=?parentWidget.findChildren();
//查找一級子控件,不然會一直遍歷所有子控件
QList?childButtons?=?parentWidget.findChildren(QString(),?Qt::FindDirectChildrenOnly);
  1. 巧妙的使用inherits判斷是否屬于某種類。
QTimer?*timer?=?new?QTimer;?????????//?QTimer?inherits?QObject
timer->inherits("QTimer");??????????//?returns?true
timer->inherits("QObject");?????????//?returns?true
timer->inherits("QAbstractButton");?//?returns?false
  1. 使用弱屬性機(jī)制,可以存儲臨時(shí)的值用于傳遞判斷。可以通過widget->dynamicPropertyNames()列出所有弱屬性名稱,然后通過widget->property("name")取出對應(yīng)的弱屬性的值。

  2. 在開發(fā)時(shí), 無論是出于維護(hù)的便捷性, 還是節(jié)省內(nèi)存資源的考慮, 都應(yīng)該有一個(gè) qss 文件來存放所有的樣式表, 而不應(yīng)該將 setStyleSheet 寫的到處都是。如果是初學(xué)階段或者測試階段可以直接UI上右鍵設(shè)置樣式表,正式項(xiàng)目還是建議統(tǒng)一到一個(gè)qss樣式表文件比較好,統(tǒng)一管理。

  3. 如果出現(xiàn)Z-order assignment: is not a valid widget.錯(cuò)誤提示,用記事本打開對應(yīng)的ui文件,找到為空的地方,刪除即可。

  4. 善于利用QComboBox的addItem的第二個(gè)參數(shù)設(shè)置用戶數(shù)據(jù),可以實(shí)現(xiàn)很多效果,使用itemData取出來。

  5. 如果用了webengine模塊,發(fā)布程序的時(shí)候帶上QtWebEngineProcess.exe translations文件夾 resources文件夾。

  6. 默認(rèn)Qt是一個(gè)窗體一個(gè)句柄,如果要讓每個(gè)控件都擁有獨(dú)立的句柄,設(shè)置下 a.setAttribute(Qt::AA_NativeWindows);

  7. Qt Android防止程序被關(guān)閉。

#if?defined(Q_OS_ANDROID)
QAndroidService?a(argc,?argv);
return?a.exec()
#else
QApplication?a(argc,?argv);
return?a.exec();
#endif
  1. 可以對整體的指示器設(shè)置樣式,例如 ::down-arrow,::menu-indicator{} ?::up-arrow:disabled,::up-arrow:off{}。

  2. 可以執(zhí)行位置設(shè)置背景圖片。

QMainWindow?>?.QWidget?{
????background-color:?gainsboro;
????background-image:?url(:/images/pagefold.png);
????background-position:?top?right;
????background-repeat:?no-repeat
}
  1. 嵌入式linux運(yùn)行Qt程序 ?Qt4寫法:./HelloQt -qws
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。

嵌入式大雜燴

461 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉