如何设置启用setFixize后再次调整主窗口大小



在我的代码中,如果打开.mp3文件,则设置主窗口的固定大小,现在,如果打开其他文件格式,我需要调整主窗口大小。如果我打开任何其他文件格式,如何启用调整大小。我尝试了以下操作:this->setFixedSize(this->sizeHint());但不起作用

这是我的代码。

void MainWindow::on_actionOpen_triggered()
{
  QString filename= QFileDialog::getOpenFileName(this,"Open Folder","","Open a File(*.*)");
  on_actionStop_triggered();
   player->setMedia(QUrl::fromLocalFile(filename));
   on_actionPlay_triggered();
    if(filename.endsWith(".mp3")){
        qDebug() << " file is mp3";
        this->setFixedSize(648,425);
    }else{
        this->setFixedSize(this->sizeHint()); //this not working. 
    }
}

使窗口可重新解析,请尝试以下操作:

if(filename.endsWith(".mp3")){
    qDebug() << " file is mp3";
    this->setFixedSize(648,425);
}else{
    setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
    setMinimumSize(0,0);
    //now you should be able to resize it
}

如果您希望它是设置固定尺寸之前的大小,请在班级中设有QSize私有成员

private:
  QSize size_reset;

并使用它在设置为固定之前先保存窗口大小:

size_reset = this->size();
this->setFixedSize(648,425);

然后重置窗口大小:

setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
setMinimumSize(0,0);
this->resize(reset_size);

最新更新