我需要一些帮助,我需要为我的应用程序设置布局,但我不知道如何在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);
}
答案 0 :(得分:4)
对于QMainWindow
,您使用setCentralWidget(QWidget*),与所有其他QWidget
子类不同。
原因是QMainWindow
已经有了自己的布局,其中包括菜单栏,状态栏,停靠窗口等的位置。因此,您创建了另一个QWidget
并设置其布局到您想要的布局,然后将QWidget
作为QMainWindow
的中心窗口小部件。
(这种不一致让我有几次......但是一旦你理解了发生了什么就有意义了。)