gpt4 book ai didi

c++ - 当 Qt 对象不是通过 Designer 创建时如何处理信号?

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:46 24 4
gpt4 key购买 nike

您好,我有空所以决定看看 Qt 以及我如何轻松地将我的 Windows 应用程序移植到 Qt。

我唯一真正的问题是需要在 Qt 下重新实现的几个控件。我已经处理了控件的基本绘图,但我的控件创建了一个子滚动条。问题是这个滚动条是作为我的新小部件的一部分动态创建的(即 m_Scrollbar 是小部件的成员)。我怎样才能响应滚动条的移动。在其他情况下,这很容易,因为我只需在我的 protected slots 下创建一个 on_myscrollbar_sliderMoved 函数并在那里处理它。然而,这确实依赖于 QScrollBar 被称为 myscrollbar。当我动态创建对象(即不通过设计器)时,我如何捕获此信号?

我猜这真的很简单,我错过了显而易见的 :)

最佳答案

connect( myScrollbar, SIGNAL( <signal signature>), this, SLOT( <slot signature>));

创建滚动条后调用connect(我假设您需要在创建滚动条后立即处理此信号)。

我假设 myScrollbar 是 QScrollBar* 类型,并且插槽被定义为您类中的成员。

当 myScrollbar 被销毁时,连接被移除(调用 disconnect)。

请参阅 QObject::connect 和 QObject::disconnect 方法的文档。

稍后编辑 - 更具体地说,在您的代码中可能是:

myScrollbar = new QScrollBar; // Create the scroll bar
// ... add it to the layout, etc.
// ... and connect the signal to your slot
connect( myScrollbar, SIGNAL( sliderMoved( int)), this, SLOT( handleSliderMoved( int)));

其中 handleSliderMoved 是您类的插槽方法。

关于c++ - 当 Qt 对象不是通过 Designer 创建时如何处理信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2325951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com