消除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.setApplicationName("FancyInput");
|
||||
app.setApplicationVersion("1.2.0");
|
||||
|
||||
// 显式锁定 QuickControls2 风格为 Basic:
|
||||
// 部署时裁剪掉了 Material/Universal/Imagine/FluentWinUI3,
|
||||
// 若不显式指定,Qt 6.7+ 默认 FluentWinUI3,找不到会直接崩溃。
|
||||
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
||||
|
||||
// Qt 6 默认启用高 DPI 缩放,叠层/遮罩坐标后续用 devicePixelRatio 归一化
|
||||
|
||||
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:/"));
|
||||
|
||||
// QML 加载失败时以非零码退出(Qt 6.5+ 推荐用法)
|
||||
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
|
||||
&app, []() { QCoreApplication::exit(-1); },
|
||||
Qt::QueuedConnection);
|
||||
|
||||
// 加载 MainWindow.qml(Window 壳,内含 Rectangle 根的主界面 Main.qml):
|
||||
// 窗口级属性与内容自适应由 QML 侧处理,C++ 保持最简。
|
||||
engine.loadFromModule("FancyInputQt", "MainWindow");
|
||||
|
||||
return app.exec();
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[General]
|
||||
disableUnqualifiedAccess = hostWindow
|
||||
+10
-17
@@ -11,40 +11,33 @@ Rectangle {
|
||||
width: 600
|
||||
height: 480
|
||||
color: Theme.background
|
||||
|
||||
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) {
|
||||
var win = settingsWindowComp.createObject(modal ? root : null, { modal: modal })
|
||||
if (win) win.show()
|
||||
settingsWindow = settingsWindowComp.createObject(modal ? root : null, { modal: modal })
|
||||
if (settingsWindow) settingsWindow.show()
|
||||
}
|
||||
// 打开无边框透明悬浮窗(WPF WindowStyle=None + AllowsTransparency + Topmost)
|
||||
function openOverlayWindow() {
|
||||
var win = overlayWindowComp.createObject(null, {})
|
||||
if (win) win.show()
|
||||
overlayWindow = overlayWindowComp.createObject(null, {})
|
||||
if (overlayWindow) overlayWindow.show()
|
||||
}
|
||||
// 设置窗口:FancyWindow 包装 SettingsWindow 内容
|
||||
// 设置窗口
|
||||
Component {
|
||||
id: settingsWindowComp
|
||||
FancyWindow {
|
||||
width: 480
|
||||
height: 360
|
||||
windowTitle: qsTr("设置 · FancyInput")
|
||||
|
||||
SettingsWindow {
|
||||
anchors.fill: parent
|
||||
onCloseRequested: rootWindow.close()
|
||||
onCloseRequested: hostWindow.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 悬浮窗:无边框 + 透明 + 置顶 + 工具窗(FancyWindow 一键配置)
|
||||
// 悬浮窗
|
||||
Component {
|
||||
id: overlayWindowComp
|
||||
FancyWindow {
|
||||
@@ -57,7 +50,7 @@ Rectangle {
|
||||
|
||||
OverlayWindow {
|
||||
anchors.fill: parent
|
||||
onCloseRequested: rootWindow.close()
|
||||
onCloseRequested: hostWindow.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
import QtQuick
|
||||
import FancyInput.Controls
|
||||
import FancyInput.Windows
|
||||
|
||||
// 主窗口:用统一包装器 FancyWindow 包装主界面内容
|
||||
// 内容在 Main.qml(Rectangle 根,Qt Creator 可可视化编辑)
|
||||
// main.cpp 通过 loadFromModule("FancyInputQt", "MainWindow") 加载本文件。
|
||||
FancyWindow {
|
||||
id: win
|
||||
width: 600
|
||||
height: 480
|
||||
visible: true
|
||||
windowTitle: qsTr("FancyInput · Qt 迁移版(阶段 0)")
|
||||
|
||||
// 内容组件:anchors.fill 跟随窗口缩放
|
||||
Main {
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
pragma Singleton
|
||||
import QtQuick
|
||||
|
||||
// 主题:与 WPF 版保持一致
|
||||
QtObject {
|
||||
readonly property color accent: "#651F65"
|
||||
readonly property color accentLight: "#8A3A8A"
|
||||
|
||||
@@ -1,35 +1,8 @@
|
||||
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 {
|
||||
id: root
|
||||
|
||||
// 内容组件可通过 rootWindow 访问包装器(如 rootWindow.close() 关窗)
|
||||
// 固定别名,统一命名,避免每个包装处都要 id 转发
|
||||
property alias rootWindow: root
|
||||
property alias hostWindow: root
|
||||
|
||||
// ===== 窗口级属性(对齐 WPF Window) =====
|
||||
property string windowTitle: "" // 标题(WPF Title)
|
||||
|
||||
Reference in New Issue
Block a user