• 6270阅读
  • 3回复

QTableWidget中第一行第一列加入QPushButton程序死机求解 [复制链接]

上一主题 下一主题
离线wuxumiao
 

只看楼主 倒序阅读 楼主  发表于: 2010-03-06
QTableWidget中第一行第一列加入QPushButton程序死机求解
代码如下:

  QTableWidget *msgtable;
   msgtable = new QTableWidget(MessageDlg);
  msgtable->insertRow(0);
   QPushButton *pb_af=new QPushButton(msgtable);
   pb_af->setStyle(new QCDEStyle);            //设置样式
   pb_af->setPalette(QColor(Qt::white));     //设置颜色
   msgtable->setCellWidget(0,0,pb_af);
//这后面是在其它列加入一些item,
   QTableWidgetItem *item1 = new QTableWidgetItem;
   QTableWidgetItem *item2 = new QTableWidgetItem;
   QTableWidgetItem *item3 = new QTableWidgetItem;
   msgtable->setItem(01,item1);
   msgtable->setItem(0,2,item2);
   msgtable->setItem(0,3,item3);

问题很奇怪,程序会执行完整个函数,但这个button加在首行首列程序执行完就会死,cpu%那种,如果首行首列不加,第2行第3行加button程序都没问题,通过调试发现把msgtable->setCellWidget(0,0,pb_af);屏蔽程序就没有问题,很是奇怪,请高手指点,我觉得我没有用错啊!
离线steinlee

只看该作者 1楼 发表于: 2010-03-06
  

QPushButton *pb_af=new QPushButton(msgtable);
QTableWidgetItem *item1 = new QTableWidgetItem;
QTableWidgetItem *item2 = new QTableWidgetItem;
QTableWidgetItem *item3 = new QTableWidgetItem;

The only difference  among these widgets is that you assign a parent to pb_af.
Try: QPushButton *pb_af=new QPushButton;
because calling setCellWidget () passes the ownership of the widget to the table;

Or  
QPushButton *pb_af=new QPushButton(msgtable);
QTableWidgetItem *item1 = new QTableWidgetItem(msgtable);
QTableWidgetItem *item2 = new QTableWidgetItem(msgtable);
QTableWidgetItem *item3 = new QTableWidgetItem(msgtable);
Looking for remote C/C++ and Qt 兼职
离线wuxumiao

只看该作者 2楼 发表于: 2010-03-06
你好 我用了你的方法还是不是 其实是加入了 然后去点击这一行,段错误退出
离线zhangyinghao
只看该作者 3楼 发表于: 2010-03-08
这是因为
   msgtable->setItem(01,item1);
0和1之间少了一个逗号
快速回复
限100 字节
 
上一个 下一个