Qt 界面自适应分辨率:不依赖 Main 函数执行
{"title":"Qt 不放在main函数执行的适应其他分辨率的界面的代码","description":"在不放在main函数执行的情况下,你可以使用Qt提供的信号和槽机制来适应其他分辨率的界面。下面是一个简单的示例代码:\n\ncpp\n#include <QtWidgets>\n\nclass MyWidget : public QWidget {\npublic:\n MyWidget() {\n QVBoxLayout* layout = new QVBoxLayout(this);\n\n QLabel* label = new QLabel("Hello World", this);\n layout->addWidget(label, 0, Qt::AlignCenter);\n\n QPushButton* button = new QPushButton("Click Me", this);\n layout->addWidget(button, 0, Qt::AlignCenter);\n\n setLayout(layout);\n\n // 连接信号和槽\n connect(qApp, &QGuiApplication::screenAdded, this, &MyWidget::onScreenGeometryChanged);\n connect(qApp, &QGuiApplication::screenRemoved, this, &MyWidget::onScreenGeometryChanged);\n connect(qApp->primaryScreen(), &QScreen::geometryChanged, this, &MyWidget::onScreenGeometryChanged);\n }\n\nprivate slots:\n void onScreenGeometryChanged(const QRect& rect) {\n // 根据屏幕的几何信息更新窗口的大小和位置\n setGeometry(rect.width() / 4, rect.height() / 4, rect.width() / 2, rect.height() / 2);\n }\n};\n\nint main(int argc, char** argv) {\n QApplication app(argc, argv);\n\n MyWidget widget;\n widget.show();\n\n return app.exec();\n}\n\n\n在这个示例中,我们创建了一个自定义的QWidget派生类MyWidget,其中包含一个垂直布局和一个标签和按钮。在MyWidget的构造函数中,我们连接了三个信号:screenAdded、screenRemoved和geometryChanged。当屏幕的几何信息发生变化时,会触发相应的槽函数onScreenGeometryChanged。在槽函数中,我们根据屏幕的几何信息更新窗口的大小和位置,以适应其他分辨率。\n\n在main函数中,我们创建了一个QApplication对象和MyWidget对象,并将MyWidget对象显示出来。然后调用app.exec()进入事件循环,等待事件的处理。\n\n注意:在不放在main函数执行的情况下,你需要自己处理事件循环和退出。"}
原文地址: https://www.cveoy.top/t/topic/pZe3 著作权归作者所有。请勿转载和采集!