对于我的GUI的多个信号我想有两对上下了scrollarea向上滚动的按钮。第一组按钮应该说scrollarea1工作,第二组按钮应在scrollarea2工作。我把在scrollarea窗口小部件被称为viewport1和viewport2。 因为两个都设置按钮也应该这样做(上下滚动),我想我会做两个插槽称为scrollUp和下滚,将处理滚动两个按钮组。不幸的是,我无法完成这项工作,需要一些帮助。我已经尝试了以下几种:一个时隙
QPushButton up;
QPushButton down;
QPushButton up2;
QPushButton down2;
connect(&up,SIGNAL(clicked()),&up,SLOT(scrollUp()));
connect(&up2,SIGNAL(clicked()),&up,SLOT(scrollUp()));
connect(&down,SIGNAL(clicked()),&down,SLOT(scrollDown()));
connect(&down2,SIGNAL(clicked()),&down,SLOT(scrollDown()));
void MainWindow::scrollDown()
{
QScrollArea area;
QWidget view;
if((QPushButton) &sender = down)
{
area=scrollArea;
view=viewport;
}
if((QPushButton) &sender = down2)
{
area=scrollArea;
view=viewport;
}
int curpos = area.verticalScrollBar()->value();
area.verticalScrollBar()->setValue(curpos+15);
int newpos = area.verticalScrollBar()->value();
QPoint topLeft = area.viewport()->rect().topLeft();
view.move(topLeft.x(),topLeft.y()-(newpos));
}
void MainWindow::scrollUp()
{
QScrollArea area;
QWidget view;
if((QPushButton) &sender = up)
{
area=scrollArea;
view=viewport;
}
if((QPushButton) &sender = up2)
{
area=scrollArea2;
view=viewport2;
}
int curpos = area.verticalScrollBar()->value();
area.verticalScrollBar()->setValue(curpos-15);
int newpos = area.verticalScrollBar()->value();
QPoint topLeft = area.viewport()->rect().topLeft();
view.move(topLeft.x(),topLeft.y()-(newpos));
}
但是这不起作用的原因有几个。我也尝试给这个插槽一些参数,例如:
connect(&up,SIGNAL(clicked()),&up,SLOT(scrollUp(scrollarea1,viewport1)));
connect(&up2,SIGNAL(clicked()),&up,SLOT(scrollUp(scrollarea2,viewport2)));
但是,再次没有成功。有谁能够帮助我?
可能的复制[我可以有几个信号一个插槽?( https://stackoverflow.com/questions/24313530/can-i-have-one-slot-for-several-signals) – ymoreau