Wyl*_*SG. 2 c++ qt user-input qtreewidget qtreewidgetitem
我是一名学生程序员,使用Qt开发GUI应用程序.我正在使用QTreeWidget来显示存储在向量中的一些属性.在同一个窗口中,我有按钮编辑,复制和删除.到目前为止,这些按钮可以满足他们的需求; 但是当我没有选择任何东西时,我遇到了问题.我的程序意外地完成了; 我猜一个段错误.我不认为我正在处理正确选择的currentItem.但是,如果没有选择任何内容,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());
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用qDebug来查找返回的内容,但我认为它有问题获取itemToEdit的值,因为它是一个QwidgetTreeItem.请留下富有成效的反馈,因为我只对学习和克服挑战感兴趣.提前致谢!
如果未选择任何项,则应假定该currentItem()方法返回NULL指针:
QString converter = itemToEdit->text(0);
Run Code Online (Sandbox Code Playgroud)
尝试从空指针调用方法是未定义的行为,它很可能会导致分段错误.所以你应该添加如下内容:
if(itemToEdit == NULL) {
// error handling, most likely a simple return
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2952 次 |
| 最近记录: |