- project.vpj: 静态链接 libvqt6_bridge.a,链接 Qt6.11.2 MinGW 动态库(Core/Gui/Widgets/Network) - App/main.vp: QApplication + QWidget + QLabel + QPushButton 测试,FFI 摆放子控件几何
34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
# main.vp — ViperQtProject:vqt6 Qt6 GUI Hello World 测试
|
||
#
|
||
# 构建需 project.vpj:
|
||
# - 静态链接 ../includes/vqt6/build/lib/libvqt6_bridge.a
|
||
# - 链接 Qt6 动态库(-L D:/Qt/6.11.2/mingw_64/lib -lQt6Core/Gui/Widgets/Network)
|
||
#
|
||
# 注意:
|
||
# - QApplication(argv) 的 argv 被包装层忽略(桥接层提供虚拟 argv),
|
||
# 这里传 t.CPtr(0)(null 指针)即可(TPV 不支持列表字面量)。
|
||
# - 高层包装 QLabel/QPushButton 未提供 move/setGeometry,直接调 FFI 摆放几何。
|
||
import t
|
||
import vqt6
|
||
|
||
|
||
def main() -> int:
|
||
# 1. QApplication(argv 被忽略,桥接层提供虚拟 argv)
|
||
app = vqt6.QApplication(t.CPtr(0))
|
||
|
||
# 2. 主窗口
|
||
win = vqt6.QWidget()
|
||
win.setWindowTitle("Viper Qt6 Demo")
|
||
win.resize(640, 480)
|
||
|
||
# 3. 子控件(直接调 FFI 设置几何位置)
|
||
label = vqt6.QLabel("Hello from Viper + Qt6!", win)
|
||
vqt6.vqt6_qwidget_set_geometry(label._ptr, 20, 20, 400, 40)
|
||
|
||
btn = vqt6.QPushButton("Click Me", win)
|
||
vqt6.vqt6_qwidget_set_geometry(btn._ptr, 20, 70, 120, 36)
|
||
|
||
# 4. 显示并进入事件循环
|
||
win.show()
|
||
return app.exec()
|