QT开发中文网

指定QMdiArea中某个title子窗口显示在最前面 qt c++ 标签切换

可以使用QMdiSubWindow类的activateWindow()函数来实现。

如果是想通过标签切换来控制QMdiArea中的子窗口显示,可以使用QTabWidget作为QMdiSubWindow的标题部分。具体操作步骤如下:

  1. 在QMdiSubWindow的构造函数中设置标题部分为QTabWidget,并将子窗口添加到其中:
MyMdiSubWindow::MyMdiSubWindow(QWidget *parent) : QMdiSubWindow(parent)
{
    QTabWidget *tabWidget = new QTabWidget(this);
    this->setWidget(tabWidget);

    // 添加子窗口到tabWidget中
    QWidget *subWidget1 = new QWidget();
    tabWidget->addTab(subWidget1, "SubWindow1");

    QWidget *subWidget2 = new QWidget();
    tabWidget->addTab(subWidget2, "SubWindow2");
}

此处创建了一个继承自QMdiSubWindow的自定义类MyMdiSubWindow。在构造函数中,首先创建一个QTabWidget对象,并将其设置为子窗口的标题部分。然后将需要显示在QMdiArea中的QWidget对象(这里分别用subWidget1和subWidget2代替)添加到QTabWidget中。

  1. 在QTabWidget的currentChanged()信号中获取当前选中的子窗口,并激活该子窗口:
QObject::connect(tabWidget, &QTabWidget::currentChanged, [=](int index){
    QWidget *subWidget = tabWidget->widget(index);
    QMdiSubWindow *subWindow = qobject_cast<QMdiSubWindow*>(subWidget->parent());
    if(subWindow) {
        subWindow->activateWindow();
    }
});

此处通过连接QTabWidget的currentChanged()信号,并在lambda函数中获取当前选中的QWidget对象(即子窗口),然后使用qobject_cast将其转换为QMdiSubWindow对象。最后调用activateWindow()函数激活该子窗口。

需要注意的是,在QMdiArea中添加子窗口时,需要使用addSubWindow()函数来添加。例如:

MyMdiSubWindow *subWindow = new MyMdiSubWindow();
mdiArea->addSubWindow(subWindow);
subWindow->show();

其中,MyMdiSubWindow是自定义的继承自QMdiSubWindow的类。在构造完这个子窗口之后,使用addSubWindow()函数将其添加到QMdiArea中,最后调用show()函数显示出来。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=809

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?