Die*_*les 21
如果使用QtQuick,可以这样做:
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.0
ApplicationWindow {
visible: true
width: 320
height: 480
Component.onCompleted: {
setX(Screen.width / 2 - width / 2);
setY(Screen.height / 2 - height / 2);
}
}
Run Code Online (Sandbox Code Playgroud)
Mit*_*tch 18
Dielson的答案要好得多,特别是因为没有提到小部件......无论如何,这是他的答案更简单的版本:
import QtQuick 2.0
import QtQuick.Window 2.0
Window {
visible: true
x: Screen.width / 2 - width / 2
y: Screen.height / 2 - height / 2
width: 320
height: 480
}
Run Code Online (Sandbox Code Playgroud)
正如亚历山大所提到的,这种绑定可能导致奇怪的大小调整行为.因此,最好使用Dielson的答案.我唯一要提到的是在QML中使用setter并不常见; 例如,某些系统(我相信它们被称为属性拦截器)甚至依赖于被设置为执行动画的属性.所以更常见的方法如下:
import QtQuick 2.0
import QtQuick.Window 2.0
Window {
visible: true
width: 320
height: 480
Component.onCompleted: {
x = Screen.width / 2 - width / 2
y = Screen.height / 2 - height / 2
}
}
Run Code Online (Sandbox Code Playgroud)
setGeometry在显示顶级小部件之前,您需要先打开它。我能想到的计算出您需要的几何形状的最简单方法是通过QDesktopWidget. 尝试下面的示例(创建一个QPushButton,在各个屏幕上移动小部件时按下它),您就会明白我的意思:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(released()), this, SLOT(ButtonPressed()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::ButtonPressed()
{
qDebug() << QApplication::desktop()->screenCount();
qDebug() << QApplication::desktop()->screenNumber();
qDebug() << QApplication::desktop()->screenGeometry(this);
}
Run Code Online (Sandbox Code Playgroud)
从那里应该相当简单地提出一个通用版本来计算用户的中心屏幕(如果存在)。
| 归档时间: |
|
| 查看次数: |
9525 次 |
| 最近记录: |