您的位置:首页 > 编程语言 > Qt开发

QT中ListWidget焦点问题

2014-05-17 10:53 447 查看
刚学,不熟悉一些部件,无法达到预期效果,点了没有反应算了好的,另人头疼是的程序崩溃,比如listwidget部件。左边第一个‘->’按钮将combobox当前项删除,并加入到listwidget中。  右边‘->’按钮将listwidget当前选中项删除,删除的项放回combobox中。

20140403.exe 中的 0x52d5ba16 (Qt5Widgetsd.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

20140403.exe 中的 0x52d5ba16 (Qt5Widgetsd.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

程序“[872] 20140403.exe: 本机”已退出,返回值为 -1073741819 (0xc0000005)。

左边第一个‘->’按钮

//*****************************************************************************************************************************************************************

void MyClass::on_pushButtonAchievementSeachCourse1_clicked()

{
ui.listWidgetAchievementSeachCourse->addItem(ui.comboBoxAchievementSeachCourse->currentText());  
//将combobox中当前项加入listwidget
ui.comboBoxAchievementSeachCourse->removeItem(ui.comboBoxAchievementSeachCourse->currentIndex());//删除combobox当前项

}

//*****************************************************************************************************************************************************************

右边‘->’按钮

//*****************************************************************************************************************************************************************

void MyClass::on_pushButtonAchievementSeachCourse2_clicked()

{

       ui.listWidgetAchievementSeachCourse->setFocus();      //设置焦点为listwidget

       if(ui.listWidgetAchievementSeachCourse->count()>0)      
//listwidget中有项目就往下执行

         {

               ui.comboBoxAchievementSeachCourse->addItem(ui.listWidgetAchievementSeachCourse->currentItem()->text());

               ui.listWidgetAchievementSeachCourse->takeItem(ui.listWidgetAchievementSeachCourse->currentRow());

}

另我疑惑的是:1、要是规规矩矩选中listwidget中的项目,再按移除键什么事都不会有。

                             2、不选中listwidget中项目,点一次添加,点一次移除,循环这样点也没事。

                            3、不选中listwidget中项目,点多次添加,再点移除,第一次循环没事。再次点加后,一按移除就崩溃了。

为什么为什么,明明设置焦点了,第一次为毛不崩等到第二次才崩,不知道,以后再解决,或是有高手提示一下。。。。。然后改变了思路改良了一下代码:用了isselected()函数

//*****************************************************************************************************************************************************************

void MyClass::on_pushButtonAchievementSeachCourse2_clicked()

{
if(ui.listWidgetAchievementSeachCourse->count()>0 )
{
for(int i=0;i<ui.listWidgetAchievementSeachCourse->count();i++)               //遍历每一项检查是不是有选中
if(ui.listWidgetAchievementSeachCourse->item(i)->isSelected())
{
       ui.comboBoxAchievementSeachCourse->addItem(ui.listWidgetAchievementSeachCourse->currentItem()->text());
       ui.listWidgetAchievementSeachCourse->takeItem(ui.listWidgetAchievementSeachCourse->currentRow());
}
else;
}

}

//*****************************************************************************************************************************************************************

这样怎么按都不会崩溃了

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息