我QStackedWidget
的第一页设置为Wgt1
.Wgt1
包含3个按钮btn1,btn2
和
btn3
.我想做以下
QStackedWidget
.btn1,btn2
和btn3
,我应该分别移动到indexPage 1,2和3.我想使用信号和插槽,所以试图连接到s 槽的clicked()
信号.但它不起作用,因为不发送所需的任何(int)值.所以为此,我想要覆盖.我想做一些类似于在我的内容中引入一个新的东西,以便在按下第一页上的按钮时它会发出一些特定的整数值.QToolButton
etCurrentIndex(int)
QStackedWidget
click()
setCurrentIndex(int)
MousePressEvent(MouseEvent *e)
signal(int)
Wgt1
但要实现这一点,我不清楚如何遵循
MousePressEvent()
我应该覆盖?对于我Wgt1
(包含按钮)或QToolButtons
我的包含Wgt1
?Wgt1
我如何检测哪个QToolButton
被按下QMousePressEvent
?
QToolButton
如何写它?我应该创建一个派生自QToolButton的新类吗?或者我可以指定一些函数指针或事件处理程序MousePressEvent()
?如果您可以回答上述问题,那将有所帮助,否则您可以建议任何其他方式来解决此问题.我不知道我是否清楚地解释了我的问题.请回复我将尝试解释更多.
有很多可能的解决方案,但我建议使用QSignalMapper.我认为覆盖事件处理程序比必要更复杂.
代码看起来像:
QSignalMapper* sm = new QSignalMapper(this);
// connect to `clicked' on all buttons
connect(btn1, SIGNAL(clicked()), sm, SLOT(map()));
connect(btn2, SIGNAL(clicked()), sm, SLOT(map()));
connect(btn3, SIGNAL(clicked()), sm, SLOT(map()));
// setMapping on each button to the QStackedWidget index we'd like to switch to
// note: this affects the value passed via QSignalMapper::mapped(int) signal
sm->setMapping(btn1, 1);
sm->setMapping(btn2, 2);
sm->setMapping(btn3, 3);
// finally, connect the mapper to the stacked widget
connect(sm, SIGNAL(mapped(int)), stackedWidget, SLOT(setCurrentIndex(int)));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1848 次 |
最近记录: |