原创 Qt自定義一個下拉框(使用基礎組件組合)

0.前言 Qt提供了一個QComboBox下拉框組件,但是對於一些自定義樣式的需求實現起來並不方便,很多東西還得去倒騰源碼,還不如直接用基礎的組件自己來實現一個下拉框。不過,自己組合的組件對樣式表的支持不是很好,而且水平不夠通用性差,所以

原创 OpenGL固定管線設置投影矩陣

0.前言 OpenGL如果沒有設置投影矩陣,默認使用一個座標範圍在[-1.0,1.0]的正交投影。如果使用固定管線編程時要切換投影矩陣,步驟如下: //切換當前矩陣爲投影矩陣 glMatrixMode(GL_PROJECTION); /

原创 PyQt5,屬性與屬性動畫

0.前言 Qt框架提供了一個基於其元對象系統的屬性系統,應用也比較廣泛,如屬性動畫、樣式表屬性、QML屬性等。Python3也有一個property屬性,但和Qt屬性不是通用的。 我們可以動態設置和獲取QObject及子類對象的屬性:

原创 關於VS Code調試Python時的執行路徑

0.問題 在Python中按F5執行py文件時,默認是從當前打開的文件夾目錄爲執行路徑。如果main入口在文件夾頂層還好,如果在子文件夾就會有些問題,比如相對路徑導入模塊時會報錯。 如下,我執行子文件夾目錄的moduleb.py,就報錯說

原创 QFuture的使用:多線程與進度條

介紹 QFuture 類可以用來獲取異步計算的結果(類似 std::future ),一般配合 Qt Concurrent 模塊和 QFutureWatcher 類工作。在 Qt Creator 中搜索 concurrent 可以看到一些

原创 QTableView拖拽交換行、列、單元格

Qt Model-View 拖拽表頭換行、列比較容易,只需要設置 QHeaderView 的 setSectionsMovable 爲 true 。但有時也需要拽拽內容區域完成交換(也有和組件外進行拖拽交互的,本文不涉及)。要完成這個功能

原创 QML防止鼠標事件被過濾(竊取)

如果將 MouseArea 放置在篩選 child 鼠標事件的 Item(例如 Flickable、SwipeView )中,則當父 Item 識別出手勢(例如滑動)時,鼠標事件可能會從 MouseArea 中被過濾。如果將 preven

原创 Qt實現桌面右下角彈窗

實現效果 這次製作的桌面右下角彈窗,主要功能有透明度和位置動畫、定時關閉。 實現思路 首先,我們需要獲取桌面大小,然後 move 到右下角去,這裏藉助的 QScreen: QScreen * screen = QGuiApplicat

原创 QML實現桌面右下角彈窗

實現效果 這次製作的桌面右下角彈窗,主要功能有透明度和位置動畫、定時關閉、鼠標放在上面暫留。 實現思路 首先,我們需要獲取桌面大小,然後 move 到右下角去,這裏藉助的 Screen: //初始位置,在屏幕右下角 x: Screen

原创 關於Qt模態窗口的設置

QWidget 模態 模態窗口會阻止其他窗口的輸入型事件(如獲取焦點),但是模態窗口的子窗口不會被限制。 (設置 setAttribute(Qt::WA_showModal, true); 的方式Qt4.5已廢棄,略過) 目前,Qt中設置

原创 C++ Lambda表達式的基本使用

0.前言 Lambda表達式(也叫lambda函數,或簡稱lambda),是從C++ 11開始引入並不斷完善的,是能夠捕獲作用域中變量的匿名函數對象。因爲C++是不能嵌套定義函數的,所以lambda就成了我們構造閉包的主要手段,不過在對象

原创 Qt中UI線程與子線程的交互

0.前言 GUI框架一般只允許UI線程操作界面組件,Qt也是如此。但我們的應用程序一般是多線程的,勢必就涉及到UI線程與子線程的交互。 下面介紹常用的UI線程與子線程交互方式,並附上自己的Demo。 1.Qt中幾種常見的多線程交互的操作

原创 C++ std::function函數包裝器

0.前言 類模板 std::function 是通用多態函數封裝器。 std::function 的實例能存儲、複製及調用任何可調用對象。C++語言中有多種可調用對象:函數、函數指針、lambda表達式、bind創建的對象以及重載了函數調

原创 JavaScript 聲明提升

函數聲明提升 假如有函數聲明如下: func() //調用語句在聲明之前 function func () { } 上例不會報錯,正是因爲 ‘函數聲明提升’,即將函數聲明提升到作用域頂部(注意是函數聲明,不包括函數表達式),相當於:

原创 PyQt5,資源文件 .qrc 的使用

0.前言 PyQt5 支持 Qt 的資源系統。這是用於在應用程序中嵌入圖片和翻譯文件等資源的工具。這使得這些資源的打包和分發更加容易。 一個 .qrc 資源集合文件是用來指定文件將被嵌入其資源的 XML 文件。在 C++ Qt 的 IDE