gpt4 book ai didi

c++ - 使用代码在 QMain WIndow 上的 QT 中添加布局

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:36 25 4
gpt4 key购买 nike

我需要一些帮助,我需要为我的应用程序设置布局,但我不知道如何在 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);

}

最佳答案

对于 QMainWindow,您使用 setCentralWidget(QWidget*) ,与所有其他 QWidget 子类不同。

原因是QMainWindow已经有了自己的布局,其中包括菜单栏、状态栏、 anchor 接窗口等的位置。因此您创建另一个QWidget并设置its 布局为您想要的布局,然后使 QWidget 成为 QMainWindow 的中央小部件。

(这种不一致让我好几次......但一旦你明白发生了什么,它就有意义了。)

关于c++ - 使用代码在 QMain WIndow 上的 QT 中添加布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5893280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com