CentralWidget настраивает размер для отображения всего содержимого

Я новичок в Qt, и я еще не понял макет на centralWidget.

У меня есть собственный подкласс QWidget (с классом.ui и cpp), который я хочу добавить в центральный виджет.

Я хотел бы понять, как сказать подклассу QMainWindow для изменения размера и соответствия содержимого всякий раз, когда я что-то добавляю.

Я пробовал с adjustSize метода adjustSize как на adjustSize так и на объектах CentralWidget, но ничего не изменилось.

Во всяком случае, я добавляю виджет таким образом:

MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
{
 ui->setupUi(this);

 MyWidget *w = new Undistort();
 w->setParent(this->centralWidget());
}

некоторые советы?

1 ответ

Данный пример, в зависимости от размера Pixmap, QMainWindow будет изменять размер. Как правило, это не идеальный случай, так как пользователю MainWindow нужно отображать на рабочем столе. Это не должно быть больше, чем размер экрана вашего рабочего стола. Я не уверен, что вы действительно ищете это. Скопировано из SO Ans

#include "mainwindow.h"
#include <qlabel>
#include <qhboxlayout>

MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindowClass)
{
 ui->setupUi(this);

 QPixmap pix;
 pix.load("C:\\Users\\user\\Desktop\\Uninstallation failure2.png");

 //Replace with ImageLabel2
 QLabel* image = new QLabel(this);
 image->setPixmap(pix);

 QHBoxLayout* hbox = new QHBoxLayout(this);
 hbox->addWidget(image);
 QWidget* centreWidget = new QWidget();

 //QMainwindow, having a feature called centreWidget, to set the layout.
 centreWidget->setLayout( hbox ); 
 setCentralWidget( centreWidget );
}
</qhboxlayout></qlabel>

licensed under cc by-sa 3.0 with attribution.