QTreeWidget::currentItem没有选择任何内容时返回的内容
QTreeWidget::currentItem What returns when there is nothing selected?
我是一名使用Qt开发GUI应用程序的学生程序员。我正在使用QTreeWidget来显示存储在向量中的一些属性。在同一个窗口中,我有编辑、复制和删除按钮。到目前为止,按钮可以完成它们需要做的事情;然而,当什么都没有选择时,我有一个问题。我的程序出乎意料地结束了;我猜是赛格失误。我认为我没有正确处理当前选择的项目。然而,Qt的文档并没有说明如果没有选择任何内容,会返回什么。所以我希望有一个更有经验的人能在这方面帮助/启发我。如果你想在代码的另一面看到一些东西,那就去问吧。这是我的(相关)代码:
#include "injectiongui.h"
#include "ui_injectiongui.h"
#include "injectiondialog.h"
#include "ui_injectiondialog.h"
#include "injectiondata.h"
#include <QMessageBox>
InjectionGUI::InjectionGUI(QWidget *parent) :
QWidget(parent),
ui(new Ui::InjectionGUI)
{
ui->setupUi(this);
ui->groupBoxGlobalParticlesPerCell->hide();
connect(ui->pushButtonEdit, SIGNAL(clicked()), this, SLOT(slotInjectionEdit()));
}
void InjectionGUI::buildTreeWidget()
{
//Build or Refresh Tree Widget with info from the vector
}
void InjectionGUI::editInjection_Clicked(QTreeWidgetItem *itemToEdit) //Creates an Injection Dialog to edit an Item from the Vector
{
QString converter = itemToEdit->text(0);
int id = converter.toInt();
InjectionDialog editInjectionDialog;
InjectionData presetValues;
if(itemToEdit == 0) // this was my attempt to handle nothing selected
{
QMessageBox invalidSelection;
invalidSelection.setText("Error: No row selected to edit");
return;
}
presetValues = qTreeInjectionData.at(id);
editInjectionDialog.setData(presetValues);
presetValues = editInjectionDialog.getData();
editInjectionDialog.exec();
qTreeInjectionData.replace(id, editInjectionDialog.transInjectionData);
buildTreeWidget();
}
void InjectionGUI::slotInjectionEdit()
{
editInjection_Clicked(ui->treeWidgetInjections->currentItem());
}
我尝试使用qDebug来查找返回的内容,但我认为它在获取itemToEdit的值时遇到问题,因为它是一个QwidgetTreeItem。请只留下富有成效的反馈,因为我只对学习和克服挑战感兴趣。提前感谢!
如果未选择任何项,则应假设currentItem()
方法返回NULL指针:
QString converter = itemToEdit->text(0);
尝试从空指针调用方法是未定义的行为,很可能会导致分段错误。所以你应该添加一些类似的东西:
if(itemToEdit == NULL) {
// error handling, most likely a simple return
}
相关文章:
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 为什么套接字中的 recv() 函数不返回任何内容?
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- C++如何使虚拟函数返回任何类型的指针
- 返回类型为struct的函数每次调用时都不返回任何内容
- 此程序不返回任何内容
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- std::ifstream.read() 不会向我的缓冲区返回任何内容
- 为什么即使输入相等,v3 也不会返回任何内容
- glGetBufferSubData() 不返回任何数据?
- stbi_load() 不返回任何内容,但不返回 null
- C++ 中是否有任何内置阶乘函数?
- 如何处理不保证返回任何内容的函数
- C++递归不返回任何内容
- MySQL++ 不返回任何内容
- stbi_load不返回任何值
- 是否有任何内置函数可以告诉编译器分支是否可预测