• 5969阅读
  • 6回复

[提问]两个QListWidget怎么在同一个QStackedLayout中显示??求大神帮忙 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2015-02-26
有两个QListWidget 分别有三个图标,现在点击左边两个QListWidget右边的QStactedLayout就有相应的变化

我现在通过 connect(listWidget, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(setCurrentIndex(int)));实现了第一个QListWidget的三个图标变化对应stackedLayout前三个加载widget的变化

现在我想让QListWidget2 三个图标也对应在stackedLayout变化,  想让QListWidget2三个图标从stackedLayout第4个开始对应到第6个,怎么实现
我通过connect(listWidget2, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(widgetSlot(int))); 加载的依然是stackedLayout前三个,不是从第4个开始,我自己写的槽

void Widget :: widgetSlot(int a) {

    int b = a + 3;
    returnStackedLayout()->setCurrentIndex(b);
}

想让stackedLayout从第四个开始显示,但是不起作用

请问大神们,我应该怎么布局,或者说是这个槽函数怎么写?????我是新手  困扰我好多天了,不知道怎么解决

离线dbzhang800

只看该作者 1楼 发表于: 2015-02-27
两个问题:

1.  你的 widgetSlot 是在何处使用的?
2.  currentRowChanged 用在你这儿还有其他问题。

只看该作者 2楼 发表于: 2015-02-28
我把第二个写错了,我现在改了,你看看,加在这里没反应,改成connect(listWidget2, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(widgetSlot(int)));


我写成connect(listWidget2, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(currentRowChanged(int))); 这样的话,它和listWidget一样都是调用stackedLayout第1个,我想从第三个开始调用

只看该作者 3楼 发表于: 2015-02-28
回 dbzhang800 的帖子
dbzhang800:两个问题:
1.  你的 widgetSlot 是在何处使用的?
2.  currentRowChanged 用在你这儿还有其他问题。 (2015-02-27 20:53) 

我把第二个写错了,我现在改了,你看看,加在这里没反应,改成connect(listWidget2, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(widgetSlot(int)));


我写成connect(listWidget2, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(currentRowChanged(int))); 这样的话,它和listWidget一样都是调用stackedLayout第1个,我想从第三个开始调用
离线dbzhang800

只看该作者 4楼 发表于: 2015-02-28
如此改完后,
你的程序运行时应该会告诉你,stackedLayout 没有 widgetSlot 这个槽函数吧??

只看该作者 5楼 发表于: 2015-02-28
回 dbzhang800 的帖子
dbzhang800:如此改完后,
你的程序运行时应该会告诉你,stackedLayout 没有 widgetSlot 这个槽函数吧?? (2015-02-28 17:13) 

我自己写的槽函数,
void Widget :: widgetSlot(int a) {

    int b = getListWidget2()->currentRow();
    b = a + 2;
    getStackedLayout()->setCurrentIndex(b);
}  我想从stackedLayout的第三个开始显示,但是我接收到的a是个空值
我现在的问题是, 不知道怎么接收QListWidget的索引,我通过listWidget->currentRow()接收到的都是空的,为什么,应该怎么接收??
我的问题其实就是让上面的listWidget和下面的listWidget都在右边区域显示,上面的通过connect(listWidget, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(setCurrentIndex(int))); QT自带 的信号和槽函数, 但是下面的listWidget2怎么和stackedLayout连接?
离线咬蚊嚼渍

只看该作者 6楼 发表于: 2015-03-01

connect(listWidget2, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(widgetSlot(int)));
改成
connect(listWidget2, SIGNAL(currentRowChanged(int)), this, SLOT(widgetSlot(int)));
然后在槽函数里写
void Widget :: widgetSlot(int a)
{
    stackedLayout->setCurrentIndex(a+3);
}  
快速回复
限100 字节
 
上一个 下一个