如何从班级中的插槽调整主窗口的大小?

时间:2014-11-06 13:17:40

标签: c++ qt

在构造函数中很容易做到,但是如何在插槽中调整大小? 在构造函数中我只是这样做:

MyDialogWindow::MyDialogWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialogWindow)
{ 
.....
    int x=this->width()*1;
    int y=this->height()*0.5;
    this->setFixedSize(x,y);
....
}

但同样没有在插槽中工作:

void MyDialogWindow::on_pushButton_clicked()
{
int x=this->width()*1;
int y=this->height()*1;
this->setFixedSize(x,y);

}

似乎我在方法中没有主窗口的对象,所以它必须如何?

3 个答案:

答案 0 :(得分:1)

您需要在this->updateGeometry()之后致电setFixedSize以表示您的小部件的重新布局:

void MyDialogWindow::on_pushButton_clicked()
{
    int x=this->width()*1;
    int y=this->height()*1;//make sure something actually changes with the size though
    this->setFixedSize(x,y);
    this->updateGeometry();
}

答案 1 :(得分:1)

尝试使用QWidget::setGeometry

答案 2 :(得分:1)

void MyDialogWindow::on_pushButton_clicked()
{
    int x = this->width()  * 2;
    int y = this->height() * 2;
    this->setFixedSize( x , y );
    this->updateGeometry( );
}

这应该有效,因为this->width( ) * 1的大小始终相同。你不会看到差异。

最好在您的班级中设置xy全局,并在那里设置宽度和高度,并在点击按钮时指定新尺寸,这样您就不会增加每个你点击按钮的时间:

int x = ui->pushButton.width()  * 2;
int y = ui->pushButton.height() * 2;

void MyDialogWindow::on_pushButton_clicked()
{
    this->setFixedSize( x , y );
    this->updateGeometry( );
}