2010-02-24 31 views
2

嗨,我有一个空闲时刻,所以决定看看Qt,以及我可以轻松地将我的Windows应用程序移植到Qt。如何通过Designer创建Qt对象时处理信号?

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

我猜这是非常简单的,我错过了明显的:)

+3

我认为你需要花更多的时间在Qt文档。 – erelender 2010-02-24 12:43:01

+0

也许这是真的......但因为我在一个小时前第一次拿起Qt,所以我认为我没有太“太”糟糕:DI喜欢它,虽然......它很容易:) – Goz 2010-02-24 12:48:13

回答

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

呼叫建立滚动条后连接(我假定你需要这个信号产生的滚动条后,立即处理)。

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

当myScrollbar被销毁时,连接被删除(调用断开连接)。

请参阅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是你们班的插槽方法。

+0

甜......我知道这将是简单的事情!干杯:) – Goz 2010-02-24 12:45:53

相关问题