qt所有widget都有黑框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt所有widget都有黑框相关的知识,希望对你有一定的参考价值。

参考技术A qt所有widget都有黑框

Qt的所有widget都有默认的边框,但是可以设置为任何颜色,或者完全移除边框。要移除边框,可以使用QWidget的setFrameStyle()函数,其参数设置为QFrame::NoFrame:

widget->setFrameStyle(QFrame::NoFrame);
参考技术B Qt的所有widget都可以使用边框或黑框来突出重要内容,具体取决于你在设置中配置的样式。 参考技术C 不是,Qt中的widget并不一定会有黑框,它取决于你使用的主题和样式表。

如何隐藏在 qt 中生成信号的小部件

【中文标题】如何隐藏在 qt 中生成信号的小部件【英文标题】:how can I hide a widget that generated a signal in qt 【发布时间】:2011-05-21 22:38:15 【问题描述】:

假设我们有多个小部件,并且所有小部件都有主菜单按钮。所以我将所有主菜单按钮点击信号连接到一个插槽,这应该是 h

connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked()));
connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked()));

我有

private slots:
    void mainClicked();

在 mainClicked 中,我想隐藏触发点击信号的人。上例中的 frame1 或 frame2。

我可以使用 sender() 来检索触发信号的 QObject,但是如何调用 hide 哪个是 QWidget 函数?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我认为这应该可行:

dynamic_cast<QWidget*>(sender()) -> hide() ;

【讨论】:

thx 我做了这个 QObject caller = sender()->parent(); ((QWidget)caller)->hide();因为发件人将是小部件的孩子 qobject_cast(sender())->window()->hide();如果你想隐藏发件人的整个窗口【参考方案2】:

看看QSignalMapper 类。基本上你将你的两个小部件的clicked() 信号连接到信号映射器的map() 插槽,它发出一个mapped(QWidget*) 信号,你连接到你的mainClicked(QWidget*) 插槽并且你让小部件通过,它发出@ 987654326@信号(其实可以自己配置参数)。 Qt 文档可以告诉您更多信息。

【讨论】:

以上是关于qt所有widget都有黑框的主要内容,如果未能解决你的问题,请参考以下文章

Qt入门系列开发教程基础控件篇小部件(所有控件的基类QWidget)

聊聊Qt中的Widget调色板QPalette

聊聊Qt中的Widget调色板QPalette

如何隐藏在 qt 中生成信号的小部件

Qt中父子widget的事件传递

QT MainWindow和Dialog的区别和选择