• 7262阅读
  • 0回复

大家帮忙解决关于QListWidget的问题 [复制链接]

上一主题 下一主题
离线happyant
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-01
我程序中有两个QListWidget,分别取名list1与list2,list1中的选项我在designer里写定了,list2中的选项根据list1所选中的项来更换~
在构造函数中连接信号与slot:
QObject::connect(ui.list1, SIGNAL(currentChanged(int)), this, SLOT(on_list1_selected()));
QObject::connect(ui.list2, SIGNAL(currentChanged(int)), this, SLOT(on_list2_selected()));

slot函数:
void mainwnd::on_list1_selected()
{
ui.list2->clear();
int tmpRow=ui.list1->currentRow();
switch(tmpRow)
{
case 0:
    ui.list2->addItem(tr("进程信息配置"));
    ui.list2->addItem(tr("进程信息配置"));
                    break;
case 1:
//……省略

default:  break;

}
//根据我程序需要的其它一些操作语句
}

void mainwnd::on_list2_selected()
{
//我程序的其它实现
//根据list2的选项来读取不同的数据表
}

现在有这样两个问题:
1、如果我的signal用的是currentRowChanged(int),那么在程序运行后,将自动将list1选中为0(其默认未选定时为-1),因此当前行改变,执行了on_list1_selected函数,list2中有对应list1选0时的选项,这是我所不希望的;
2、如果我将信号更改为itemSelectionChange(void,那么,可以解决1所出现的问题。
但是,假如我list1选了0,list2选了某一项之后(比如2),我再在list1中重新选择(比如这次选1),那么选择1后,要执行on_list1_selected函数,对list2进行clear操作,这时,list2的选项也有2变成了-1,因此执行on_list2_selected()。这也是我不希望的结果。
currentRowChanged和itemSelectionChange信号在选中了某项后,执行clear操作都会这样。按照代码分析,执行slot是应该的,但是我的程序并不希望在clear的时候执行slot函数,只在我选中某项的时候执行。
请教各位达人,我应该怎么来实现。
快速回复
限100 字节
 
上一个 下一个