Добавление Layout в QT в QMain WIndow с использованием кода - PullRequest
2 голосов
/ 05 мая 2011

Мне нужна помощь, мне нужно установить макет для моего приложения, но я не знаю, как настроить макет в QmainWindow ..

вот часть моего кода для window.cpp:

window::window(QWidget *parent)
    : QMainWindow(parent)
{


    createFilesTable();

    queryopen();
    exitButton = createButton("E&xit",SLOT(programout()));
    insertButton = createButton("&Add", SLOT(insert()));
    editButton = createButton("&Edit", SLOT(edit()));
    clearButton = createButton("&Clear", SLOT(clear()));
    selectButton = createButton("&Select", SLOT(select()));

    QHBoxLayout *buttonsLayout = new QHBoxLayout;
    buttonsLayout->addStretch();
    buttonsLayout->addWidget(selectButton);
    buttonsLayout->addWidget(insertButton);
    buttonsLayout->addWidget(editButton);
    buttonsLayout->addWidget(clearButton);
    buttonsLayout->addWidget(exitButton);

    txtid   = new QLineEdit;
    txtname = new QLineEdit;
    txtdesc = new QLineEdit;
    label1 = new QLabel("ID:");
    label2 = new QLabel("Name:");
    label3 = new QLabel("Description:");

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(label1,1,0,1,1);
    mainLayout->addWidget(txtid,1,1,1,2);
    mainLayout->addWidget(label2,2,0,1,1);
    mainLayout->addWidget(txtname,2,1,1,3);
    mainLayout->addWidget(label3,3,0,1,1);
    mainLayout->addWidget(txtdesc,3,1,1,3);
    mainLayout->addLayout(buttonsLayout,4,1,1,3);
    mainLayout->addWidget(filesTable,6,0,6,5);
    setLayout(mainLayout);


    setWindowTitle("Database Connection");
    resize(450,300);

}

1 Ответ

4 голосов
/ 05 мая 2011

Для QMainWindow вы используете setCentralWidget (QWidget *) , в отличие от всех других QWidget подклассов.

Причина в том, что QMainWindow уже имеет свой собственный макет,который включает места для строки меню, строки состояния, окон док-станции и т. д. Таким образом, вы создаете еще один QWidget и устанавливаете его макет в соответствии с желаемым макетом, а затем делаете этот QWidget центральным виджетом QMainWindow.

( Это несоответствие получило меня несколько раз ... но оно имеет смысл, когда вы поймете, что происходит. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...