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;
}
}
//*****************************************************************************************************************************************************************
这样怎么按都不会崩溃了
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;
}
}
//*****************************************************************************************************************************************************************
这样怎么按都不会崩溃了
相关文章推荐
- QToolBar焦点问题 (QTBUG18896)
- qt 两个lineEdit 判断焦点问题
- 关于QT的QSystemTrayIcon的上下文菜单失去焦点仍然显示的问题
- Qt 窗体焦点问题
- 使Qt中listWidget在平板上有滑动属性
- android ListItem 焦点获取问题
- Qt中各个widget前后位置的设定(在Qt中,所有问题都要一分为二,QWidget体系和QGraphicsWidget体系)
- QT中如何逐行读取文本内容到listwidget中
- qt tablewidget的显示问题
- Qt Webengine Widget常见问题
- qt list widget 设背景与父窗口一致
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
- Qt 两个lineEdit 判断焦点问题
- QT从Listwidget中逐行读取数据到文本中
- Qt QTableWidget 点击事件 重复问题的解决
- Qt QGLWidget 不能够实时刷新的问题
- Qt 实现listWidget中项的检索
- Android中listitem的焦点问题
- QT widget 失去焦点不响应按键
- QT手动moc问题:virtual struct QMetaObject const * __thiscall Widget::metaObject