2015-11-23 3 views
1

Дизайнер QtCreator позволяет графически редактировать пользовательский интерфейс. Я просто пытался сделать какой-то смысл - то, что я хотел был текст заголовка по центру в середине и некоторые виджет под ним, как это:Как просто разместить заголовок и некоторый контент под ним в Qt Designer?

image description

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

image description

Я поместил QLabel сверху и QOpenGLWidget внизу - я использовал только QOpenGlWidget, потому что он имеет черный фон на скриншоте. Я действительно планирую использовать другой QWidget. Тогда я использовал вертикальную компоновку. Итак, как мне получить результат на первом изображении, используя QLabel и QWidget?

+0

Qt Creator не имеет ничего общего с файлами '.ui'. Это IDE и объединяет подключаемый модуль, который позволяет графически редактировать эти файлы, вот и все. Файлы '.ui' обрабатываются средством' uic' для создания файлов 'foo_ui.h', которые настраивают ваш пользовательский интерфейс на основе виджета. Откуда появилась ваша идея о том, что '.ui' имеет какое-либо отношение к HTML? Вы понимаете, что XML - это общий формат обмена данными; современный HTML-код просто является допустимым XML. –

+0

У меня появилась идея, потому что она использует таблицы стилей и потому, что HTML - это xml, как и файлы ui. Кстати, HTMH5 уверен, что он не является корректным XML все время. –

+0

«У меня возникла идея, потому что она использует таблицы стилей». Файл '.ui' сам по себе не использует таблицы стилей. Таблица стилей - это строковое (текстовое) свойство отдельных виджетов; это виджеты, обрабатывающие таблицы стилей. Файл '.ui' по существу прозрачен для таблиц стилей, они обрабатываются не иначе, как любое другое свойство текста, такое как имя виджета, подпись и т. Д. –

ответ

1

Использование Qt XML не является заменой HTML.

HTML предназначен для маркировки веб-страниц. Виджеты Qt - это не веб-страницы!

Похоже, что вы смотрите на коробку с текстом «content» и думаете об общем виджетах. Я вижу это и вижу QLabel, который все-таки получен из QWidget.

Возможно, легче объяснить в коде, как бы я это сделал, и затем вы можете перевести его на то, чтобы сделать то же самое в Qt Creator.

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    // Create a root widget (this could also be a QMainWindow, or any other widget) 
    QWidget* pWidget = new QWidget; 

    // Layout to arrange the widgets vertically 
    QVBoxLayout* pBoxLayout = new QVBoxLayout; 
    pWidget->setLayout(pBoxLayout); 

    // The header widget 
    QLabel* pHeader = new QLabel("Header"); 
    pHeader->setAlignment(Qt::AlignCenter); 
    pHeader->setMinimumSize(200, 20); 
    pHeader->setMaximumSize(200, 20); 
    QFont font = pHeader->font(); 
    font.setBold(true); 
    font.setPixelSize(16); 
    pHeader->setFont(font); 

    // the content widget 
    QLabel* plabel = new QLabel("content"); 
    plabel->setMinimumSize(200, 200); 
    plabel->setMaximumSize(200, 200); 
    plabel->setStyleSheet("background-color: rgb(182, 182, 182); border: 5px solid black;"); 
    plabel->setAlignment(Qt::AlignCenter); 

    pBoxLayout->addWidget(pHeader); 
    pBoxLayout->addWidget(plabel); 

    pWidget->show(); 

    return a.exec(); 
} 

Как вы можете видеть здесь, я разработал виджет содержания с использованием таблицы стилей. Это самый простой способ, после небольшого количества практики с ними.

Полученный код создает виджет, который выглядит следующим образом: -

Output image

Вы можете играть с размерами и шрифтами, чтобы соответствовать исходному изображению точно.

+0

Вы использовали собственный код, а не конструктор. Мы используем конструктор с CSS-таблицами стилей в нашей компании - возможно, я смогу экстраполировать информацию, которая мне нужна из этого ответа, но я не ожидал этого. Кроме того, вы действительно думаете, что вам нужен полный параграф, чтобы поговорить о том, как я * «испытываю недостаток в мышлении в виджетах Qt» *. Я имею в виду, что я только что сказал в своем вопросе, что я новичок в этом, поэтому вы не говорите ... –

+0

Я знаю, что вы использовали Дизайнер. Как я заявляю * «Вероятно, легче объяснить в коде, как я буду заниматься этим, что вы затем можете перевести на то, чтобы сделать то же самое в Qt Creator». * Что касается упоминания об отсутствии опыта, я пытался дать вам уверенность в том, что Qt может делать то, что вы просите, и не слишком сложно, как только вы привыкнете думать так.Простите, если это не натолкнулось на то, как это было предназначено. – TheDarkKnight

+0

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