【问题标题】:how to switch windows between cpp files? in Qt如何在cpp文件之间切换窗口?在 Qt 中
【发布时间】:2020-07-12 20:55:59
【问题描述】:

我在 Qt 框架 C++ 中的小应用程序有问题

我有一个第一个窗口,其中有两个按钮,您可以在其中选择播放音乐或视频。音乐按钮将关闭“选择窗口”并应打开“音乐窗口”,视频按钮也是如此。

我不知道该怎么做...我知道一种我已经学习并使用过的方法,但是我将解释这种方法不适合我当前的问题。

我在选择窗口的标题中创建了该窗口类的指针,当点击音乐按钮时,我新建了指针和 musicWindow->show(); 和 hide(); 选择窗口,这很好但有一个问题:

新打开的音乐窗口没有任何任务栏图标/缩略图,当它最小化时,无法再次打开它(使用 alt-tab 除外)

并没有找到像一个完整的新窗口一样打开它的方法,我可以使用 choosWindow.show(); / musicWindow.show(); /... 一次打开所有这些。

我知道一定有办法,但我什至不知道要搜索什么主题才能更进一步......

FirstWindow.cpp:
void FirstWindow::on_musicChoose_clicked()
{
    //send a signal from here
}

void FirstWindow::on_videoChoose_clicked()
{
    //send a signal from here
}

main.cpp:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FirstWindow w;

    if(//what condition?)
    {
        MusicWindow mw;
        mw.show();
    }
    if(//what condition?)
    {
        VideoWindow vw;
        vw.show();
    }
    

    return a.exec();
}

【问题讨论】:

  • 您应该创建一个minimal reproducible example 并发布该实际代码,而不是描述代码。
  • 使用信号槽。单击音乐按钮时,发出一个信号,将其连接到执行所需操作的插槽
  • @bolov 我添加了一些代码,但我确定这没有帮助。

标签: c++ qt class user-interface


【解决方案1】:

我在 Qt 论坛找到了我的答案:

https://forum.qt.io/topic/68602/child-window-in-taskbar/3

@Radek(Qt 论坛):在创建它们时尝试将 0(零)作为父级传递。

FirstWindow.cpp:
void FirstWindow::on_musicChoose_clicked()
{
    this->hide();
    mw = new MusicWindow(0); // passing nullptr as parent
    mw.show();
}

void FirstWindow::on_videoChoose_clicked()
{
    this->hide();
    vw = new VideoWindow(0); // passing nullptr as parent
    vw.show();
}

main.cpp:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FirstDialog w;
    w.exec();
    

    return a.exec();
}

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2016-03-24
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多