• 7956阅读
  • 1回复

请教大家一个关于qlisybox的信号highlighted(index)的问题 [复制链接]

上一主题 下一主题
离线semomo
 

只看楼主 倒序阅读 楼主  发表于: 2006-03-21
请教大家一个关于qlisybox的信号highlighted(index)的问题
有20条信息,存储在了20个数组里。
我希望在界面上列一个表,类似于我们常用的电子邮箱的邮件列表一样,将这20条信息列个表,
每一项先赋个序号,然后你点击(单击)表里的每一个条目,就跳出一个对话框之类得东西显示
这个条目对应的数组里的详细信息(可能有多行)。我是这么设表的:
  listbox = new QListBox(this);
      for (int i = 0; i < 20; i++) {
          char str[20];
          sprintf(str, "message %d\n", i);
          listbox->insertItem(str);
      }

这样在界面上就有20条目录了
但是我怎么给每一条目录都指定一个信号呢?
按照qt的中文网站上说的highlighted信号:

void QListBox::highlighted ( int index ) [signal]
This signal is emitted when the user highlights a new current item. index is the index of the highlighted item.

按照这么说,是应该在上面的程序后面加上
connect(listbox,highlight(index),this,SLOT(showmessage()));
还是应该
connect(listbox,highlight(1),this,SLOT(showmessage_1()));
connect(listbox,highlight(2),this,SLOT(showmessage_2()));
.....
connect(listbox,highlight(20),this,SLOT(showmessage_20()));
上面的slot是自己定义的槽,用于构造一个对话框并显示相应的数组信息的

个人觉得因该是第一种,但index不要制定吗?如果指定,就变成了第二种,可如果不需要指定,
我又怎么知道到底是那个条目被选定了(因为我需要知道发出信号的条目的序号来选择相应的数组)?
[ 此贴被XChinux在2006-03-21 20:56重新编辑 ]
离线badboy_llf

只看该作者 1楼 发表于: 2006-03-23
连接一个槽就可以了呀

connect(QlistBox,SIGNAL(highlighted(int)),this,SLOT(showDialog(int)));

在槽中判断一下:

showDialog(int index)
{
if(index == 0) showDialog0();
  if(index == 1) showDialog1();
  .......
}
快速回复
限100 字节
 
上一个 下一个