QTableWidget;使用celllChanged信号
QTableWidget; Using the celllChanged signal
我是一名使用Qt开发工作GUI的学生程序员,在使用QTableWidget时遇到了问题。我有一个由这个小部件制作的电子表格,它将各种值作为用户输入。我在这个电子表格之外有一个QLineedit字段,它需要在第9列中显示任何值的总和。在这种情况下,我认为最好使用cellchanged信号将第9列相加,并将linedit字段显示为所有这些单元格的总和。我的问题是,当我去执行我的应用程序时,我收到了以下应用程序输出,而我的GUI中的这一部分不起作用:
> Object::connect: No such slot InjectionDialog::addWeightSum(int,int)
> Object::connect: (sender name: 'tableWidgetInjectionLocations')
> Object::connect: (receiver name: 'InjectionDialog')
我已经多次确保这个插槽确实存在,并且据我所知,它的调用是正确的。然而,我是一个学生,也许我是不对的,现在我在这里。
myInjectionDialog.h包含以下插槽;
private slots:
void accepted_Clicked();
void cancel_Clicked();
void useFluidiFileRdoBtn_Clicked();
void useFluidSpecifiedValuesRdoBtn_Clicked();
void useParticleiFileRdoBtn_Clicked();
void useParticleSpecifiedValuesRdoBtn_Clicked();
void particleInjectionRdoBtn_Clicked();
void liquidDropletsRdoBtn_Clicked();
void addWeightSum(int &row, int &col);
我的injectiondialog.cpp包含以下内容。
InjectionDialog::InjectionDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::InjectionDialog)
{
ui->setupUi(this);
connect(ui->pushButtonAccept, SIGNAL(clicked()), this, SLOT(accepted_Clicked()));
connect(ui->pushButtonCancel, SIGNAL(clicked()), this, SLOT(cancel_Clicked()));
connect(ui->radioButtonUseiFileFluidInjection, SIGNAL(clicked()), this, SLOT(useFluidiFileRdoBtn_Clicked()));
connect(ui->radioButtonUseSpecifiedValuesFluidInjection, SIGNAL(clicked()), this, SLOT(useFluidSpecifiedValuesRdoBtn_Clicked()));
connect(ui->radioButtonUseiFileParticleInjection, SIGNAL(clicked()), this, SLOT(useParticleiFileRdoBtn_Clicked()));
connect(ui->radioButtonUseSpecifiedValuesParitcleInjection, SIGNAL(clicked()), this, SLOT(useParticleSpecifiedValuesRdoBtn_Clicked()));
connect(ui->tableWidgetInjectionLocations, SIGNAL(cellChanged(int,int)), this, SLOT(addWeightSum(int &row, int &col)));
我的注入对话框还包括我添加此列的功能;如下所示:
void InjectionDialog::addWeightSum(int &row, int &col)
{
double weightSum;
double totalWeightSum;
QString tempstr;
bool check;
if(col == 9)
{
for (int i = 0; i < ui->tableWidgetInjectionLocations->rowCount(); i++)
{
if (ui->tableWidgetInjectionLocations->item(i,9)->text() != "")
{
tempstr = ui->tableWidgetInjectionLocations->item(i,9)->text();
weightSum = tempstr.toDouble(&check);
if(check == false)
{
ui->lineEditWeightSum->setText("Error");
break;
}
else
{
totalWeightSum += weightSum;
}
}
}
ui->lineEditWeightSum->clear();
tempstr.append(QString("%1").arg(totalWeightSum));
ui->lineEditWeightSum->setText(tempstr);
}
}
这个问题可能是由我没有看到的一些简单的事情引起的。我感谢你能提供的任何帮助。请只留下建设性的反馈,因为我只对改进和实现我的目标感兴趣。在这方面,我感谢所有提供协助的努力,并感谢你阅读本文。
信号槽签名不同。在您的void addWeightSum(int &row, int &col);
声明中你已经提交了参考资料。拆下它们。void addWeightSum(int row, int col);
相关文章:
- Qt VTK交互风格的信号到小部件
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 线程之间的布尔停止信号
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 有可能在信号处理程序中设置promise吗
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 在条件变量中触发错误信号的频率是多少
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 调试和自由执行中的信号处理
- 升压信号2将插槽传递到成员功能以断开连接
- C++函数包装器来捕获某些信号
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- 中止信号来自 C++ 中的中止(3) (SIGABRT)
- Qt将信号与另一个类方法连接
- C++ 信号和插槽不工作:插槽不响应事件
- Coursera :自动评分器的未知信号 11
- QTableWidget;使用celllChanged信号