【问题标题】:hide QWidget from a different QWidget从不同的 QWidget 隐藏 QWidget
【发布时间】:2016-08-22 21:56:20
【问题描述】:

我有一个带有两个小部件buttonWidget 和infoWidget 的MainWindow。 单击buttonWidget中的按钮后,我试图隐藏infoWidget(并最终显示不同的小部件)。

我试过了:

主窗口.h

public:
void hideInfo();

主窗口.cpp

void MainWindow::hideInfo()
{
ui->info->hide();
}

buttonsWidget.cpp

void buttonsWidget::on_timingButton_clicked()
{
MainWindow::hideInfo();

//Then will do something to show 'timingWidget'..

}

非常感谢

【问题讨论】:

    标签: c++ qt qwidget


    【解决方案1】:

    您应该为此使用Signals and Slots

    在buttonsWidget.h中添加一个信号

    signals:
        void hideInfoSignal();
    

    在main函数中,用mainwindow方法hideInfo()连接按钮信号。

    QObject::connect(this->info, SIGNAL(hideInfoSignal),this, SLOT(hideInfo));
    

    我没有对此进行测试,因为我在这台机器上没有 Qt,但应该可以工作,可能需要进行一些小的修改。如果出现任何错误,请告诉我,我会提供帮助。另外,请阅读信号和插槽文档。

    【讨论】:

    • 感谢您的帮助。最后我做了: buttonsWidget.h 信号: void hideInfoSignal(); infowidget.h 公共槽:void hideInfo(); buttonsWidget.cpp on_timing_button_clicked(){ hideInfoSignal(); } infoWidget.cpp hideInfo(){ this->hide; } mainWindow.cpp connect(ui->buttons, SIGNAL(hideinfoSignal), ui->info, SLOT(hideInfo))
    • 太棒了!很高兴我能帮上忙。
    • 看起来不错!但正如您所知,文档说要发出信号,您应该在调用信号之前输入关键字“emit”。像这样:“发出 hideInfoSignal()”。这篇文章讨论了使用发射与调用信号之间的差异:stackoverflow.com/questions/10160476/…
    • 很抱歉再次给您带来麻烦 - 我现在正尝试在其位置显示不同的小部件。我有:connect(ui->buttons, SIGNAL(showTimingSignal()), ****, Slot (showTImingScreen()));有****的地方我有什么?
    • 应该是对定义了插槽 showTImingScreen() 的对象的引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多