QStringList list;
list << "aaa" << "bbb" << "ccc";
//往後追加 等價於 append
list.push_back("ddd");
//往前追加 等價於 prepend
list.push_front("xxx");
//往後追加
list.append("ddd");
//往前追加
list.prepend("xxx");
//指定第一個位置插入 等價於 prepend
list.insert(0, "xxx");
//輸出 QList("xxx", "aaa", "bbb", "ccc", "ddd")
qDebug() << list;
//qwindowdefs.h
typedef QList<QWidget *> QWidgetList;
typedef QList<QWindow *> QWindowList;
typedef QHash<WId, QWidget *> QWidgetMapper;
typedef QSet<QWidget *> QWidgetSet;
//qmetatype.h
typedef QList<QVariant> QVariantList;
typedef QMap<QString, QVariant> QVariantMap;
typedef QHash<QString, QVariant> QVariantHash;
typedef QList<QByteArray> QByteArrayList;
Qt的佈局的邊距間隔,如果在沒有改動過的情況下,是會根據系統解析度以及縮放比來決定對應的預設值,是變化的,比如在1080P解析度是9px,在2K解析度又變成了11px,所有你會發現你在1080P電腦編譯的程式,明明看到的是6px、9px,怎麼到2K、4K解析度下間隔和邊距就變得好大,如果要保持無論何種解析度都一樣,你需要手動重新設定這些值,這裡有個坑,比如預設是是9,你想其他解析度也是9,你必須先把9改成其他值比如10,然後再改成9,這樣才表示真的改動,你直接9改成9是不會變化的,在屬性設計器中右側有個小箭頭恢復值的,也是灰色,只有加深顯示,並且出現了恢復預設值箭頭,才表示你確實是改過了值。
Qt對高分屏以及dpi縮放的支援越來越成熟,在Qt4時代預設的策略就是跟隨系統的縮放,從Qt5.6開始提供了 AA_EnableHighDpiScaling 的屬性設定開啟高分屏,到了5.14以後還可以指定縮放的策略 HighDpiScaleFactorRoundingPolicy 比如支援浮點數的縮放比而不是之前的整數倍,從Qt6開始預設永遠開啟了 AA_EnableHighDpiScaling 屬性,沒法取消。很多時候我們需要兩種模式,一種就是永遠不應用高分屏及縮放,一種就是自動應用高分屏及縮放。
//永遠不應用高分屏及縮放
int main(int argc, char *argv[])
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
QApplication::setAttribute(Qt::AA_Use96Dpi);
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(5,14,0))
QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
#endif
QApplication a(argc, argv);
....
return a.exec();
}
//自動應用高分屏及縮放
//方法很多,綜合對比下來還是採用組態檔指定縮放策略最適中。
//新建qt.conf檔案放到可執行檔案同一目錄
[Platforms]
WindowsArguments = dpiawareness=0
//有時候想讓使用者去選擇何種策略,需要開啟高分屏的之後只需要將qt.conf檔案放到可執行檔案同一目錄即可,就算程式碼中設定了不應用高分屏及縮放,也無效,也是優先取qt.conf檔案的策略。