在Qt Widget应用程序中设置大小文本框和按钮

时间:2015-11-05 13:34:33

标签: c++ ios iphone qt

我在MAC上的Qt Widget中开发了iPhone应用程序,但是屏幕尺寸和所有元素都有问题,我为iPhone 4s设置了所有元素和屏幕。当这个应用程序在iPhone 5上运行时,所有东西看起来都很小。所以我想设置屏幕尺寸和所有元素,以便在所有类型的手机和屏幕上看起来更好。

在widget应用程序中,我无法直接在.qml文件中添加,我只能通过拖放进行更改。

先谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以通过QDesktopWidget查询动态设置屏幕尺寸。

QRect r = QApplication::desktop()->screenGeometry();
int h = r.height();
int w = r.width();

The Qt layout system提供了一种简单而强大的方法,可以在窗口小部件中自动排列子窗口小部件,以确保它们充分利用可用空间。

请参阅下面的示例代码,该代码采用全屏幕并将该空间拆分为文本标签和按钮。您可以调整窗口大小,直到小部件为止。最小尺寸限制。

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QVBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QApplication>
#include <QDesktopWidget>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{   
    QWidget *central_widget = new QWidget;
    QVBoxLayout *layout = new QVBoxLayout(central_widget);

    QPushButton *button1 = new QPushButton("Button1");
    layout->addWidget(button1);

    QLabel *label1 = new QLabel();
    label1->setText("Label1");
    label1->setAlignment(Qt::AlignCenter);
    layout->addWidget(label1);

    setCentralWidget(central_widget);

    QRect r = QApplication::desktop()->screenGeometry();
    int h = r.height();
    int w = r.width();

    button1->setMinimumHeight(h/4);
    button1->setMaximumHeight(h/2);
    button1->setMinimumWidth(w/2);
    button1->setMaximumWidth(w);

    label1->setMinimumHeight(h/4);
    label1->setMaximumHeight(h/2);
    label1->setMinimumWidth(w/2);
    label1->setMaximumWidth(w);

    resize(w, h);
}

MainWindow::~MainWindow()
{
}