• 9155阅读
  • 10回复

[提问]QTableWidget问题 急~ [复制链接]

上一主题 下一主题
离线ff007bit
 
只看楼主 正序阅读 楼主  发表于: 2011-06-12
我使用了QTableWidget,并设置了格式,只能选中一行
  1. //单击选择一行
  2. ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  3. //设置只能选择一行,不能多行选中
  4. ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);

现在要加一个信号,当用户选中某一行时,提取该行的数据执行相应操作
试过cellEntered,cellClicked,itemEntered等,函数如下,RecordCell(int,int)是我的槽函数,
  1. connect(ui.tableWidget,SIGNAL( cellEntered(int , int) ),this,SLOT( RecordCell(int, int) ) );
但是,每次都接受不到信号,setMouseTracking也设置了,还是不行.求大神赐教~

离线zhangyueyi87
只看该作者 10楼 发表于: 2011-06-13


可以啊!奇怪了。
离线ff007bit
只看该作者 9楼 发表于: 2011-06-13

  1. ui->setupUi(this);
  2.     ui->lineEdit_Password->setEchoMode(QLineEdit::Password);
  3.     ui->lineEdit_RePassword->setEchoMode(QLineEdit::Password);
  4.     ui->comboBox->addItem(tr("管理员"));
  5.     ui->comboBox->addItem(tr("普通用户"));
  6.     //test
  7.     ui->tableWidget->insertRow(0);
  8.     ui->tableWidget->setItem(0,0,new QTableWidgetItem( "1"));
  9.     ui->tableWidget->setItem(0,1,new QTableWidgetItem( "1"));
  10.     ui->tableWidget->insertRow(1);
  11.     ui->tableWidget->setItem(1,0,new QTableWidgetItem( "1"));
  12.     ui->tableWidget->setItem(1,1,new QTableWidgetItem( "1"));
  13.     connect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(abc(int, int)));

这是构造函数部分的,之前先往QTableWidget里添加了些数据,槽函数的实现如下:
  1. void RegisterDlg::abc(int a, int b)
  2. {
  3.     int c;
  4.     c=a+b;
  5. }
测试时在槽函数里设了个断点,但始终运行不到断点处,那个int c没什么意义,就是随便写了一句.
我想要的是cellClicked信号,测试不行.
太谢谢您了~



离线zhangyueyi87
只看该作者 8楼 发表于: 2011-06-13
如果还是不行把你的部分源码贴上,帮你看看
离线zhangyueyi87
只看该作者 7楼 发表于: 2011-06-13
这个不是选中一行是产生的,是鼠标光标进入item
This signal is emitted when the mouse cursor enters a cell
如果要选中一行时产生的,用cellClicked信号


离线ff007bit
只看该作者 6楼 发表于: 2011-06-13
回 5楼(zhangyueyi87) 的帖子
这个cellEntered信号是选中一行时产生的吗?
为什么我总是不可以,还有什么设置吗?
谢谢你~
离线zhangyueyi87
只看该作者 5楼 发表于: 2011-06-13
ui->setupUi(this);
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
    ui->tableWidget->setMouseTracking(true);
    connect(ui->tableWidget,SIGNAL(cellEntered(int,int)),this,SLOT(doSomeThing(int,int)));
可以的啊
离线ff007bit
只看该作者 4楼 发表于: 2011-06-13
回 3楼(dbzhang800) 的帖子
是QTableWidget的信号啊
离线dbzhang800

只看该作者 3楼 发表于: 2011-06-13
引用楼主ff007bit于2011-06-12 22:34发表的 QTableWidget问题 急~ :
cellEntered,cellClicked,itemEntered
.......

这些东西是你自己杜撰的么?
离线ff007bit
只看该作者 2楼 发表于: 2011-06-13
我写在构造函数里了,以前也写这里面.
谢谢回复~
离线cecho

只看该作者 1楼 发表于: 2011-06-13
connect  函数  写的位置不对吧,我也遇到过收不到信号的问题,结果发现connect函数写错了位置。比如说,要在可能触发信号的代码前就把connect函数写好
快速回复
限100 字节
 
上一个 下一个