Я студент-программист, использующий Qt для разработки графического интерфейса для работы, и я столкнулся с проблемой при использовании QTableWidget. У меня есть таблица из этого виджета, которая принимает различные значения в качестве пользовательского ввода. У меня есть поле QLineedit за пределами этой таблицы, которое должно отображать сумму любых значений в 9-м столбце. В этом случае я подумал, что было бы лучше использовать сигнал с ячейками , чтобы сложить 9-й столбец и показать, как установить поле linedit в сумму всех этих ячеек. Моя проблема в том, что когда я иду, чтобы выполнить свое приложение, я получаю следующий вывод приложения, и эта часть в моем GUI не работает:
> Object::connect: No such slot InjectionDialog::addWeightSum(int,int)
> Object::connect: (sender name: 'tableWidgetInjectionLocations')
> Object::connect: (receiver name: 'InjectionDialog')
Я неоднократно проверял, что этот слот действительно существует и правильно назван, насколько мне известно. Однако я студент и, возможно, я не прав, и теперь я здесь.
my InjectionDialog.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);
myjectiondialog.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);
}
}
Эта проблема может быть вызвана чем-то простым, чего я просто не вижу. Я ценю любую помощь, которую вы можете предложить. Пожалуйста, оставляйте только конструктивную обратную связь, поскольку я заинтересован только в улучшении и достижении моих целей здесь. В этом отношении я ценю все попытки помочь и благодарю вас за чтение этого.