日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Qt/C++開發(fā)經(jīng)驗小技巧301-305

text":"從Qt5.2版本開始 , QLineEdit文本框控件提供了setClearButtonEnabled函數(shù)用于是否開啟右側(cè)的關(guān)閉按鈕 , 這種控件非常常見 , 比如還可以增加個搜索按鈕 , 怎么添加呢 , 在5.2版本以前要自己定義一個布局 , 然后new一個按鈕放在布局右側(cè) 。 在5.2版本以后 , 提供了addAction重載方法 , 用于添加一個動作到文本框的前面或者后面 , 這種方式會自動留出邊距 。#if (QT_VERSION < QT_VERSION_CHECK(520))//所有Qt版本都兼容的萬能辦法QPushButton *searchButton = new QPushButton;//執(zhí)行對應(yīng)的處理connect(searchButton SIGNAL(clicked(bool)) this SLOT(search()));searchButton->setMinimumWidth(30);searchButton->setIcon(QIcon(\":/main.ico\"));//實例化布局用于放置按鈕QHBoxLayout *layout = new QHBoxLayout(ui->lineEdit);layout->setContentsMargins(0 0 1 0);//指定對齊方式添加按鈕layout->addWidget(searchButton 0 Qt::AlignRight);//設(shè)置文本的外邊距/空出距離放置按鈕ui->lineEdit->setTextMargins(0 0 searchButton->minimumWidth() + 3 0);#else//推薦用下面這個方法更方便QAction *searchAction = new QAction(ui->lineEdit);//執(zhí)行對應(yīng)的處理connect(searchAction SIGNAL(triggered(bool)) this SLOT(search()));searchAction->setIcon(QIcon(\":/main.ico\"));//TrailingPosition表示右側(cè)/還可以是LeadingPosition表示左側(cè)ui->lineEdit->addAction(searchAction QLineEdit::TrailingPosition);#endif大概從6.5版本開始 , mingw編譯的debug套件編譯大名鼎鼎的qcustomplot開源圖表控件 , 會提示報錯too many sections/file too big字樣 。 release套件或者其他編譯器都正常 。 你只需要在pro中加上 QMAKE_CXXFLAGS += -Wa-mbig-obj 即可 。 大概從2024年開始 , 在線安裝Qt的工具默認不加載Qt5的安裝包 , 需要在右上角有個什么 Archive 的 , 勾選一下 , 然后單擊 Filter/篩選 按鈕即可 , 這樣左側(cè)就會將Qt5的也都顯示出來 。 估計官網(wǎng)是想強制讓我們用Qt6 , 慢慢的把Qt5淘汰 。 可惜的是Qt6不支持win7 , 而win7目前用戶數(shù)還是很多的 。 使用Qt的drawText繪制文本 , 如果使用的對應(yīng)參數(shù)是QPoint坐標(biāo)的函數(shù) , drawText(const QPoint &p const QString &s) , 務(wù)必注意他是以左下角作為起始點的(Qt文檔中特意寫了 The y-position is used as the baseline of the font) , 這個和其他開發(fā)框架比如C#等都不同 , 理論上按照屏幕繪制規(guī)則 , 應(yīng)該是左上角才對 , 所以涉及到和其他平臺對接的時候 , 建議采用 void drawText(const QRect &r const QString &text) 函數(shù)繪制 , 指定一個區(qū)域 。 這個知識點很容易被忽視 , 從而造成災(zāi)難性的后果 。 在linux上使用webengine瀏覽器模塊打開網(wǎng)頁時 , 有些系統(tǒng)可能出現(xiàn)崩潰的現(xiàn)象 , 就算是直接編譯運行自帶的瀏覽器示例比如simplebrowser , 也是無法正常打開網(wǎng)頁 。 原因是為了安全性考慮 , 沙箱運行啥的 , 需要設(shè)置個環(huán)境變量 。 只需要在main函數(shù)最前面加一行 qputenv(\"QTWEBENGINE_DISABLE_SANDBOX\" \"1\") 即可 。 在QListWidgetItem設(shè)置復(fù)選框后 , 有時候希望在切換復(fù)選框的時候有個信號通知 , 以便進行處理 , 到這里你會發(fā)現(xiàn) , QListWidget所有信號中并沒有該信號 , 通過查閱QListWidgetItem的setCheckState函數(shù)源碼得知 , 會發(fā)送一個dataChanged信號 , 該信號是QListWidget的數(shù)據(jù)模型發(fā)出來的 , 于是就很好辦了 。void Form::on_listWidget_itemPressed(QListWidgetItem *item){//鼠標(biāo)按下切換選中狀態(tài)item->setCheckState(item->checkState() == Qt::Checked ? Qt::Unchecked : Qt::Checked);void Form::dataChanged(const QModelIndex &topLeft const QModelIndex &bottomRight){\t//為什么需要通過文本再去找到節(jié)點/而不是取選中的節(jié)點/因為不選中也可以勾選前面的復(fù)選框QListWidgetItem *item;QString text = topLeft.data().toString();int count = ui->listWidget->count();for (int i = 0; i < count; ++i) {item = ui->listWidget->item(i);if (item->text() == text) {break;//找到對應(yīng)節(jié)點后進行處理國內(nèi)站點:https://gitee.com/feiyangqingyun 國際站點:https://github.com/feiyangqingyun"

    推薦閱讀