Qt: создание пользовательского интерфейса, который сжимается и расширяется

StackOverflow https://stackoverflow.com/questions/2145983

  •  23-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь научиться создавать макет моего приложения Qt Symbian, чтобы оно расширялось/сжималось и вписывалось в размер экрана различных устройств.

В свой пользовательский интерфейс по умолчанию я добавил QTabWidget с пятью вкладками, которые я хочу разместить на экране устройства.У меня две проблемы:

  1. Как сделать так, чтобы вкладки сжимались, чтобы всегда вписывались в экран устройства, или это невозможно?Что, если одно устройство имеет ширину 240 пикселей, а другое — 400 пикселей?Как вы можете видеть сейчас (Эмулятор Нокиа) вкладки выходят за пределы экрана.(И я не хочу использовать ScrollButtons)

  2. Как вы можете видеть на красной части картинки (Эмулятор Нокиа) в пользовательском интерфейсе есть пробелы, которые мне не нужны.Вместо этого я хочу, чтобы QTabWidget заполнял весь экран (вся красная часть).

Подводя итог, я сейчас учусь, и было бы здорово, если бы вы дали мне несколько советов о том, где искать дополнительную информацию о проблемах с созданием пользовательского интерфейса, подходящего для многих устройств и разрешений экрана.Спасибо!

Это код в моем файле пользовательского интерфейса:

void setupUi(QMainWindow *UITest)
{
    if (UITest->objectName().isEmpty())
        UITest->setObjectName(QString::fromUtf8("UITest"));
    UITest->resize(284, 167);
    QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(UITest->sizePolicy().hasHeightForWidth());
    UITest->setSizePolicy(sizePolicy);
    centralwidget = new QWidget(UITest);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
    verticalLayout = new QVBoxLayout(centralwidget);
    verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
    tabWidget = new QTabWidget(centralwidget);
    tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
    tabWidget->setTabPosition(QTabWidget::South);
    tabWidget->setUsesScrollButtons(false);
    tab = new QWidget();
    tab->setObjectName(QString::fromUtf8("tab"));
    tabWidget->addTab(tab, QString());
    ...More tabs...        

    verticalLayout->addWidget(tabWidget);

    UITest->setCentralWidget(centralwidget);

    retranslateUi(UITest);

    QMetaObject::connectSlotsByName(UITest);
} // setupUi

void retranslateUi(QMainWindow *UITest)
{
    UITest->setWindowTitle(QApplication::translate("UITest", "UITest", 0, QApplication::UnicodeUTF8));
    UITest->setStyleSheet(QApplication::translate("UITest", "background: red;\n" "padding: 0px;", 0, QApplication::UnicodeUTF8));
    tabWidget->setStyleSheet(QApplication::translate("UITest", "background: white;\n" "margin: 0px;\n" "padding: 0px;", 0, QApplication::UnicodeUTF8));
} // retranslateUi

В main.cpp showMaximized() используется для отображения моего виджета, так как мне также нужны кнопки меню внизу.

Это было полезно?

Решение

Как показать виджет?Я предлагаю использовать метод showFullScreen, чтобы показать это — это может помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top