我需要将我的自定义小部件(programmaticaly)放在MainWindow中的指定位置。
在屏幕截图中,我在要放置小部件的地方标记了红色矩形“小部件”。我希望在QmenuBar和QToolBar之上放置小部件。
我已经尝试过setCentralWidget,但它会在整个窗口中展开小部件。
图像展示我的问题
我的小部件代码:
timers.cpp
#include "QtWidgets"
#include "timers.h"
static QLabel *createDragLabel(const QString &text, QWidget *parent)
{
QLabel *label = new QLabel(text, parent);
label->setAutoFillBackground(true);
label->setFrameShape(QFrame::Panel);
label->setFrameShadow(QFrame::Raised);
return label;
}
Timers::Timers(QWidget *parent) : QWidget(parent)
{
QLabel *wordLabel = createDragLabel("dupppa", this);
}
mainwindow.cpp
MainWindow::MainWindow()
{
initMenu();
initButtons();
TrackWindow *trackWindow = new TrackWindow();
setCentralWidget(trackWindow);
Timers *firstTimer = new Timers();
//setCentralWidget(firstTimer); // suck
}
答案 0 :(得分:0)
好的,这是一个解决方案:让MainWidget
成为小部件的父级,但不要将其添加到父级布局中。然后基本上使用QWidget::move()
移动您的小部件,并使用QWidget::resize()
设置其大小。通过这种方式,您可以获得具有绝对位置的小部件。
工作代码摘录:
#include <QLayout>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow{ parent },
ui{ new Ui::MainWindow }
{
ui->setupUi(this);
menuBar = new QMenuBar { this };
toolBar = new QToolBar { this };
textEdit = new QTextEdit { this };
menuBar->addMenu("File");
menuBar->addMenu("Edit");
menuBar->addMenu("About");
toolBar->addAction("Copy");
toolBar->addAction("Cut");
toolBar->addAction("Insert");
toolBar->addAction("Other tools");
layout()->setMenuBar(menuBar);
addToolBar(toolBar);
textEdit->setText("Your widget");
textEdit->resize(90, 30);
textEdit->move(250, 10);
}