#c #qt #resize #qtwidgets
#c #qt #изменение размера #qtwidgets
Вопрос:
В настоящее время я учусь использовать Qt. Итак, я пытаюсь создать приложение, которое использует QtWidgets. Однако, когда я запустил свою программу и вручную изменил размер полученного окна, отображаемые тексты были обрезаны (см. Изображение)
.
Код, который я использую, показан ниже:
#include <QApplication>
#include "FenPrincipale.h"
using namespace std;
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
FenPrincipale fenetre;
fenetre.show();
return app.exec();
}
и FenPrincipale
содержит:
FenPrincipale::FenPrincipale()
{
QWidget mainFen;
QGroupBox *groupbox1 = new QGroupBox("Class definition", amp;mainFen);
QLineEdit *className = new QLineEdit;
QLineEdit *mother_className = new QLineEdit;
QFormLayout *class_def = new QFormLayout;
class_def->addRow("Class name", className);
class_def->addRow("Mother Class", mother_className);
groupbox1->setLayout(class_def);
QGroupBox *groupbox2 = new QGroupBox("Options", amp;mainFen);
QCheckBox *header_protect = new QCheckBox("Protect header against mutiple inclusions");
QCheckBox *constr_gen= new QCheckBox("Generate default constructor");
QCheckBox *destruct_gen= new QCheckBox("Generate a destructor");
QVBoxLayout *options_layout = new QVBoxLayout;
options_layout->addWidget(header_protect);
options_layout->addWidget(constr_gen);
options_layout->addWidget(destruct_gen);
groupbox2->setLayout(options_layout);
QVBoxLayout *main_layout = new QVBoxLayout;
main_layout->addWidget(groupbox1);
main_layout->addWidget(groupbox2);
this->setLayout(main_layout);
this->setWindowTitle("Zero Class Generator");
this->resize(400,450);
}
Я понятия не имею, как решить эту проблему. Кто-нибудь может мне помочь?
Комментарии:
1.Помимо всего прочего, вы используете локальную область
QWidget
mainFen
в качестве родительского элемента для различных других виджетов. Это приведет к удалению этих дочерних виджетов, когдаmainFen
они выйдут за пределы области видимости в конце конструктора.
Ответ №1:
QWidget::setMinimumSize
должно выполнить задание