gpt4 book ai didi

c++ - 如果我不想使用 QMainWindow 的布局,我应该使用什么来代替 QMainWindow? QMainWindow 应该首选在哪里?

转载 作者:行者123 更新时间:2023-11-28 01:47:46 30 4
gpt4 key购买 nike

https://stackoverflow.com/a/13661255/462608

QMainWindow comes with its own layout, you can't set that directly. You probably should be setting your layout on the central widget, or possibly not using a QMainWindow at all if you don't want its layout/features.

我有自己的一组按钮和其他我想排列在网格中的东西。
我应该将我的小部件添加到 QMainWindow 的默认布局吗?

如果我不想使用 QMainWindow 的布局,我应该使用什么来代替 QMainWindow? QMainWindow 应该首选哪里?

最佳答案

来自 docs :

QMainWindow has its own layout to which you can add QToolBars, QDockWidgets, a QMenuBar, and a QStatusBar. The layout has a center area that can be occupied by any kind of widget. You can see an image of the layout below.

QMainWindow layout

如果我不想使用 QMainWindow 的布局,我应该使用什么来代替 QMainWindow? QMainWindow 应该首选哪里?

因此,如果您对 QToolBarQDockWidgetQMenuBarQStatusBar 感兴趣s,你应该使用QMainWindow。否则,您可以只使用普通的 QWidget

我应该将我的小部件添加到 QMainWindow 的默认布局吗?

不,您无权访问QMainWindow 的布局。您应该有一个 QWidget,它包含布局中的所有小部件(例如您的按钮),然后将该小部件用作 QMainWindow 的中央小部件,例如:

#include <QtWidgets>

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

QMainWindow mainWindow;
QWidget centralWidget; //this is the widget where you put your buttons
QGridLayout centralLayout(&centralWidget); //sets layout for the widget
//add buttons
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
centralLayout
.addWidget(new QPushButton(
QStringLiteral("(%0, %1)")
.arg(i).arg(j)),
i, j);

//use your widget inside the main window
mainWindow.setCentralWidget(&centralWidget);
//main window can have a toolbar too
QToolBar* myToolBar = mainWindow.addToolBar("myToolBar");
myToolBar->addAction("myToolBar action");
//show mainwindow
mainWindow.show();

return a.exec();
}

关于c++ - 如果我不想使用 QMainWindow 的布局,我应该使用什么来代替 QMainWindow? QMainWindow 应该首选在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44235059/

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