QWidget/QMainWindow与QLayout的布局
1.使用QWidget和QVBoxLayout 添加菜单栏和其他控件布局
demo如下:
#include <QWidget>#include <QApplication>
#include <QLayout>
#include <QToolBar>
#include <QWidgetAction>
#include <QPushButton>
#include <QLineEdit>
int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget w;w.setWindowTitle("testWidgetToolBar");QVBoxLayout *layout = new QVBoxLayout(&w);// 1. 创建 QToolBarQToolBar *toolBar = new QToolBar();// 2. 创建 QWidgetAction 并设置其 QWidget(如 QPushButton)QWidgetAction *widgetAction = new QWidgetAction(toolBar);QPushButton *button = new QPushButton("Button in QWidgetAction");widgetAction->setDefaultWidget(button);// 3. 将 QWidgetAction 添加到 QToolBartoolBar->addAction(widgetAction);// 4. 可选:添加普通 QAction(如分隔符或普通按钮)toolBar->addSeparator();toolBar->addAction("Normal Action");// 5. 将 QToolBar 添加到布局layout->addWidget(toolBar, 0, Qt::AlignTop);// 6. 可选:添加其他控件到布局QLineEdit *lineEdit = new QLineEdit();layout->addWidget(lineEdit,1, Qt::AlignTop);QLineEdit *lineEdit1 = new QLineEdit();layout->addWidget(lineEdit1);layout->setContentsMargins(10,20,40,60);w.show();return a.exec();
}
运行结果如下:
2.使用QWidget介绍QHBoxLayout、QVBoxLayout 的嵌套布局
布局可参考Qt官网