我在我的学位课程中工作,我的GUI存在问题。
我已经在一个单独的项目中测试了不同小部件的位置,以简化我尝试的代码。
这是我的问题:
我创建了一个重载的resizeEvent
来调整我的所有小部件的大小。除了一件事之外,它的效果很好:
在我的测试程序启动后,小部件的大小不合适,我需要手动调整窗口大小一次以强制调整大小,即使setGeometry
调用在构造函数中,如下面的代码所示
·H
MainWindow.h
-------------
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QGridLayout>
#include <QGroupBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void resizeEvent ( QResizeEvent * event );
private:
Ui::MainWindow *ui;
QGroupBox *g1;
QGroupBox *g2;
QPushButton *but2;
QGridLayout *lay;
};
#endif // MAINWINDOW_H
的.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->lay = new QGridLayout();
this->g1 = new QGroupBox("g1");
this->g2 = new QGroupBox("g2");
this->but2 = new QPushButton("But2");
this->lay->addWidget(g1, 0, 0, 1, 1);
this->lay->addWidget(but2, 0, 1, 1, 1);
this->lay->addWidget(g2, 1, 0, 1, 2);
this->g1->setBaseSize(60, 60);
this->g2->setBaseSize(60, 60);
this->ui->centralWidget->setLayout(lay);
this->ui->centralWidget->setMinimumSize(100, 100);
this->but1->setHidden(true);
this->g1->setGeometry(5, 1, (this->ui->centralWidget->width())55, (this->ui->centralWidget->height())-83);
this->but2->setGeometry(this->g1->width()+10 , 6, 40, (this->ui->centralWidget->height())-88);
this->g2->setGeometry(5, this->g1->height()+5, (this->ui->centralWidget->width())-10, 70);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::resizeEvent ( QResizeEvent * event )
{
this->g1->setGeometry(5, 1, (this->ui->centralWidget->width())-55, (this->ui->centralWidget->height())-89);
this->but2->setGeometry(this->g1->width()+10 , 6, 40, (this->ui->centralWidget->height())-88);
this->g2->setGeometry(5, this->g1->height()+5, (this->ui->centralWidget->width())-10, 70);
}
我正在尝试找到一个解决方案,以便小部件从一开始就具有良好的大小
更新以下是两张图片:
调整大小之前
调整大小后
问题在于,当内部没有任何内容时,QGroupBox只需要按下它旁边按钮的大小,我希望它从一开始就更大
答案 0 :(得分:0)
而不是interface IEntity
{
int Id { get; }
}
,在将小部件添加到布局时(而且也可能在resizeEvent()中)应该使用拉伸因子,例如......
await _repo.GetAsync<Class2>(id, x => x.class1);
其他小部件的方式相同。