2

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

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

我猜这真的很简单,我错过了明显的:)

4

1 回答 1

5
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 是您的类的插槽方法。

于 2010-02-24T12:37:59.707 回答