消除VsCode警告
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
; qmllint 配置:集中管理警告级别,避免在代码里散落内联注释
|
||||||
|
; 规则名与 qmllint --help 输出一致,级别可为 info / warning / error / disable
|
||||||
|
; 官方文档:https://doc.qt.io/qt-6/qtqml-tooling-qmllint.html#settings
|
||||||
|
[Warnings]
|
||||||
|
|
||||||
@@ -8,29 +8,12 @@ int main(int argc, char *argv[])
|
|||||||
app.setOrganizationName("FancyInput");
|
app.setOrganizationName("FancyInput");
|
||||||
app.setApplicationName("FancyInput");
|
app.setApplicationName("FancyInput");
|
||||||
app.setApplicationVersion("1.2.0");
|
app.setApplicationVersion("1.2.0");
|
||||||
|
|
||||||
// 显式锁定 QuickControls2 风格为 Basic:
|
|
||||||
// 部署时裁剪掉了 Material/Universal/Imagine/FluentWinUI3,
|
|
||||||
// 若不显式指定,Qt 6.7+ 默认 FluentWinUI3,找不到会直接崩溃。
|
|
||||||
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
||||||
|
|
||||||
// Qt 6 默认启用高 DPI 缩放,叠层/遮罩坐标后续用 devicePixelRatio 归一化
|
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
QQmlApplicationEngine engine;
|
||||||
|
|
||||||
// 关键:qt_add_qml_module 把 qmldir + QML 文件嵌入到 :/FancyInputQt/ 资源前缀下。
|
|
||||||
// 必须把 qrc:/ 加入 import path,QML 引擎才能发现内嵌模块;
|
|
||||||
// 否则独立运行(无 build/ 下的磁盘模块目录)会报
|
|
||||||
// "Module FancyInputQt contains no type named Main"。
|
|
||||||
engine.addImportPath(QStringLiteral("qrc:/"));
|
engine.addImportPath(QStringLiteral("qrc:/"));
|
||||||
|
|
||||||
// QML 加载失败时以非零码退出(Qt 6.5+ 推荐用法)
|
|
||||||
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
|
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
|
||||||
&app, []() { QCoreApplication::exit(-1); },
|
&app, []() { QCoreApplication::exit(-1); },
|
||||||
Qt::QueuedConnection);
|
Qt::QueuedConnection);
|
||||||
|
|
||||||
// 加载 MainWindow.qml(Window 壳,内含 Rectangle 根的主界面 Main.qml):
|
|
||||||
// 窗口级属性与内容自适应由 QML 侧处理,C++ 保持最简。
|
|
||||||
engine.loadFromModule("FancyInputQt", "MainWindow");
|
engine.loadFromModule("FancyInputQt", "MainWindow");
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
[General]
|
||||||
|
disableUnqualifiedAccess = hostWindow
|
||||||
+10
-17
@@ -11,40 +11,33 @@ Rectangle {
|
|||||||
width: 600
|
width: 600
|
||||||
height: 480
|
height: 480
|
||||||
color: Theme.background
|
color: Theme.background
|
||||||
|
|
||||||
property int clickCount: 0
|
property int clickCount: 0
|
||||||
|
property Window settingsWindow: null
|
||||||
|
property Window overlayWindow: null
|
||||||
|
|
||||||
// 弹独立窗口:统一包装器现包装(等价 WPF 的 new SettingsWindow().Show())
|
|
||||||
// 关键:createObject 的 parent 传 root(主窗口)→ FancyWindow 自动成为
|
|
||||||
// transient parent 窗口(= WPF 的 Owner)。有了它:
|
|
||||||
// · 非模态:随主窗口最小化/关闭,任务栏不单列
|
|
||||||
// · 模态:Qt.WindowModal 在同一窗口组内生效,主窗口被系统禁用,
|
|
||||||
// 点击主窗口时 Windows 自带标题栏闪烁反馈(同 WPF ShowDialog)
|
|
||||||
function openSettingsWindow(modal) {
|
function openSettingsWindow(modal) {
|
||||||
var win = settingsWindowComp.createObject(modal ? root : null, { modal: modal })
|
settingsWindow = settingsWindowComp.createObject(modal ? root : null, { modal: modal })
|
||||||
if (win) win.show()
|
if (settingsWindow) settingsWindow.show()
|
||||||
}
|
}
|
||||||
// 打开无边框透明悬浮窗(WPF WindowStyle=None + AllowsTransparency + Topmost)
|
|
||||||
function openOverlayWindow() {
|
function openOverlayWindow() {
|
||||||
var win = overlayWindowComp.createObject(null, {})
|
overlayWindow = overlayWindowComp.createObject(null, {})
|
||||||
if (win) win.show()
|
if (overlayWindow) overlayWindow.show()
|
||||||
}
|
}
|
||||||
// 设置窗口:FancyWindow 包装 SettingsWindow 内容
|
// 设置窗口
|
||||||
Component {
|
Component {
|
||||||
id: settingsWindowComp
|
id: settingsWindowComp
|
||||||
FancyWindow {
|
FancyWindow {
|
||||||
width: 480
|
width: 480
|
||||||
height: 360
|
height: 360
|
||||||
windowTitle: qsTr("设置 · FancyInput")
|
windowTitle: qsTr("设置 · FancyInput")
|
||||||
|
|
||||||
SettingsWindow {
|
SettingsWindow {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onCloseRequested: rootWindow.close()
|
onCloseRequested: hostWindow.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 悬浮窗:无边框 + 透明 + 置顶 + 工具窗(FancyWindow 一键配置)
|
// 悬浮窗
|
||||||
Component {
|
Component {
|
||||||
id: overlayWindowComp
|
id: overlayWindowComp
|
||||||
FancyWindow {
|
FancyWindow {
|
||||||
@@ -57,7 +50,7 @@ Rectangle {
|
|||||||
|
|
||||||
OverlayWindow {
|
OverlayWindow {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onCloseRequested: rootWindow.close()
|
onCloseRequested: hostWindow.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,12 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import FancyInput.Controls
|
|
||||||
import FancyInput.Windows
|
import FancyInput.Windows
|
||||||
|
|
||||||
// 主窗口:用统一包装器 FancyWindow 包装主界面内容
|
|
||||||
// 内容在 Main.qml(Rectangle 根,Qt Creator 可可视化编辑)
|
|
||||||
// main.cpp 通过 loadFromModule("FancyInputQt", "MainWindow") 加载本文件。
|
|
||||||
FancyWindow {
|
FancyWindow {
|
||||||
id: win
|
id: win
|
||||||
width: 600
|
width: 600
|
||||||
height: 480
|
height: 480
|
||||||
visible: true
|
visible: true
|
||||||
windowTitle: qsTr("FancyInput · Qt 迁移版(阶段 0)")
|
windowTitle: qsTr("FancyInput · Qt 迁移版(阶段 0)")
|
||||||
|
|
||||||
// 内容组件:anchors.fill 跟随窗口缩放
|
|
||||||
Main {
|
Main {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
pragma Singleton
|
pragma Singleton
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
// 主题:与 WPF 版保持一致
|
|
||||||
QtObject {
|
QtObject {
|
||||||
readonly property color accent: "#651F65"
|
readonly property color accent: "#651F65"
|
||||||
readonly property color accentLight: "#8A3A8A"
|
readonly property color accentLight: "#8A3A8A"
|
||||||
|
|||||||
@@ -1,35 +1,8 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
|
|
||||||
// 统一窗口包装器(等价 WPF 的 Window 类)
|
|
||||||
//
|
|
||||||
// 用法:内容组件一律保持 Rectangle 根(Qt Creator 设计模式可可视化编辑),
|
|
||||||
// 需要窗口时用本包装器现包装即可:
|
|
||||||
//
|
|
||||||
// FancyWindow {
|
|
||||||
// width: 480
|
|
||||||
// height: 360
|
|
||||||
// windowTitle: qsTr("设置")
|
|
||||||
// modal: true // 模态(WPF ShowDialog 等价)
|
|
||||||
// SettingsWindow { anchors.fill: parent }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // 无边框透明悬浮窗(WPF WindowStyle=None + AllowsTransparency + Topmost)
|
|
||||||
// FancyWindow {
|
|
||||||
// frameless: true
|
|
||||||
// transparent: true
|
|
||||||
// alwaysOnTop: true
|
|
||||||
// toolWindow: true
|
|
||||||
// OverlayWindow { anchors.fill: parent }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// 子项(内容组件)直接写在包装器里即可 —— Window 的 data 默认行为
|
|
||||||
// 会自动把 Item 子项挂到内容区(contentItem)。
|
|
||||||
Window {
|
Window {
|
||||||
id: root
|
id: root
|
||||||
|
property alias hostWindow: root
|
||||||
// 内容组件可通过 rootWindow 访问包装器(如 rootWindow.close() 关窗)
|
|
||||||
// 固定别名,统一命名,避免每个包装处都要 id 转发
|
|
||||||
property alias rootWindow: root
|
|
||||||
|
|
||||||
// ===== 窗口级属性(对齐 WPF Window) =====
|
// ===== 窗口级属性(对齐 WPF Window) =====
|
||||||
property string windowTitle: "" // 标题(WPF Title)
|
property string windowTitle: "" // 标题(WPF Title)
|
||||||
|
|||||||
Reference in New Issue
Block a user