Qt:从子部件最小化应用程序

Qt: Minimize application from child widget

本文关键字:最小化 应用程序 Qt      更新时间:2023-10-16

我在Qt中有一个应用程序,每当我想最小化应用程序时,我使用

this->showMinimized();

但是,这一行不能在子部件中工作(除了在子部件的构造函数中使用'parent'之外)。

除了设置一个信号和槽,有没有一种方法来最小化应用程序从一个子部件?我尽量避免信号和插槽,因为我开始有大量的信号和插槽。

提前感谢!

如果你只有一个窗口,你可以使用这个方法:

QMainWindow* win = qobject_cast<QMainWindow*>(QApplication::activeWindow());
win->showMinimized();

但是i thing signals/slots可能是一个更好的方法。

您可以将窗口状态设置为最小化。如果子部件的父部件是应用程序的主窗口,则应该调用子部件:

this->parentWidget()->setWindowState(Qt::WindowMinimized);

也可以在子部件的构造函数中保存指向主窗口的指针:

QWidget * myParent;
MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    this->myParent = parent;
   ...
}

和调用当你想要最小化应用程序时:

this->myParent->setWindowState(Qt::WindowMinimized);

如果您不想使用signal和slot(但在本例中可以),您可以将您想要最小化的窗口放在子部件的构造函数中。