原创 QCombobox內容居中(包含展示內容,下拉列表)

1.本文達到效果如下: 2.代碼如下 Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(t

原创 基於qt opengl壁紙編輯器

預覽效果: 作品連接 glsl推薦:http://glslsandbox.com/

原创 c++ 編譯器優化引起的問題

int fun1(int& num) { if(num) num += 100; } int fun2(int& num) { if(!num) num -= 100; } int m

原创 windows下關於QtSingleApplication啓動多個實例問題修復

Qt提供的QtSingleApplication在不同用戶模式下能夠啓動多個實例,是由於創建QtSingleApplication時, QtLP_Private::QtLockedFile創建的臨時目錄不通導致,系統及目錄一般在C:/Wi

原创 QT 動態編譯引起的This application failed to start because it could not find or load the Qt platform plugin

採用qt(5.10.1)安裝包安裝的程序(默認是動態編譯存在該問題,靜態編譯無此問題) 當影藏運行程序所在文件夾時,運行該程序會出現如下所示問題: 解決方法,採用靜態編譯(qt源碼需要靜態編譯)即可 注:官方安裝包均爲動態編譯

原创 qt 佈局導致的控件邊界位置leaveEvent觸發錯誤

當通過佈局控制QT界面時,如果存在多個控件關係如下: (父)A->(子)B->(孫)C layoutA->layoutB->layoutC C的邊界可能出現:鼠標還沒有離開C的範圍(相差很小)時,就觸發了leaveEvent事件(可能是Q

原创 qt adjustSize自適應顯示不全問題

adjustSize在顯示過程中可能存在展示不完全的問題,產生場景: 子widget大小超過父widget,同時子widget大於當前屏幕分辨率的2/3。 對adjustSize應源碼如下: QSize QWidgetPrivate::

原创 Qt 一般無邊框窗口(QWidget Qt::FramelessWindowHint 帶陰影)

效果圖: 1.邊框縮放 2.拖拽至邊界自動半屏全屏(windows) 3.支持自定義繪製背景,修改resizeBackground函數即可,支持貼圖 4.邊框修改、拖動縮放可以通過MSDN查到資料 4.1 當鼠標拖動窗口移動時,系統

原创 Qt窗口自適應子控件方法

問題描述: Qt界面存在自適應大小問題,當界面部分子控件隱藏或者展示就會存在部分空白,需要自適應,即當子控件隱藏時收縮覆蓋,當子控件顯示時擴大顯示,如果只採用QBoxLayout,主界面只能擴大不能縮小 解決方案: 1.採用setFixe

原创 QTableView/QTreeView設置自定義排序(非QSortFilterProxyModel)

QSortFilterProxyModel可以實現自定義排序,當數據量較大、排序邏輯比較複雜的情況下采用該排序加載可能較爲緩慢。 改進措施:自定義排序 QTreeViewBase.cpp實現 setSortingEnabled(fals

原创 QGraphicsDropShadowEffect引起的重繪

QGraphicsDropShadowEffect繪製的陰影widget,會導致子控件重繪: 如widget存在子控件如pushbutton,treeview,tableview等,當子控件觸發任意界面事件(如hover)時,會觸發wid

原创 wsprintf緩衝區大小爲1024字節

如果需要超過1024個字節,需要採用_snwprintf 參考:https://docs.microsoft.com/zh-cn/windows/desktop/api/winuser/nf-winuser-wsprintfa

原创 Qt依賴佈局隱藏子控件問題

當主窗口依賴於佈局設置大小時,放大正確(如子控件show),縮小錯誤(如子控件hide,子控件會變化,父窗口的佈局不會自適應),需要進行如下處理: widget->hide(); widget->setAttribute(Qt::WA_

原创 qt字體縮放問題

採用qt-qss繪製界面樣式時,字體採用pt不會隨dpi的縮放發生變化,採用px則會自動縮放

原创 CToolTipCtrl封裝類

ToolTipsManager.h #pragma once #include <afxcmn.h> #define TOOLTIPS(x,y) CToolTipsManager::Instance(x)->Report(y) #de