gpt4 book ai didi

c++ - QTreeWidget::currentItem 没有选择时返回什么?

转载 作者:搜寻专家 更新时间:2023-10-31 00:44:19 24 4
gpt4 key购买 nike

我是一名学生程序员,使用 Qt 开发 GUI 应用程序。我正在使用 QTreeWidget 来显示存储在 vector 中的一些属性。在同一个窗口中,我有编辑、复制和删除按钮。到目前为止,按钮可以完成他们需要做的事情;但是,当没有选择任何内容时,我遇到了问题。我的程序意外结束;我猜是段错误。我认为我没有正确处理所选的 currentItem。然而Qt's Documentation如果没有选择任何内容,这并没有说明返回的内容。所以我希望有更多经验的人在这方面帮助/启发我。如果您想在所包含的代码之外看到某些内容,请询问。这是我的(相关)代码:

#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
}

关于c++ - QTreeWidget::currentItem 没有选择时返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com