Предполагается, что эта программа возьмет матрицу на основе QLineEdit
затем нажав кнопку транспонирования, она должна открыть новый кадр с транспонированной матрицей как QLabel-х.
Проблема в том, что нажатие кнопки транспонирования ничего не делает, поэтому я думаю, что это имеет какое-то отношение к соединению
Это мой заголовочный файл для этого.cpp
#ifndef DIMENSIONS_H
#define DIMENSIONS_H
#include <QDialog>
#include <QLineEdit>
namespace Ui {
class Dimensions;
}
class Dimensions : public QDialog
{
Q_OBJECT
public:
explicit Dimensions(QWidget *parent = 0);
~Dimensions();
private slots:
void on_buttonBox_accepted();
void accepts();
private:
Ui::Dimensions *ui;
};
#endif // DIMENSIONS_H
и вот мой код:
void Dimensions::on_buttonBox_accepted()
{
rows=ui->spinBox->value();
columns=ui->spinBox_2->value();
QFrame *result = new QFrame;
QGridLayout* layout = new QGridLayout;
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++){
fields[i][j] = new QLineEdit();
fields[i][j]->setFixedWidth(30);
layout->addWidget(fields[i][j],i,j);
}
}
transpose = new QPushButton("Transpose",result);
layout->addWidget(transpose, rows-1,columns,1,1);
result->setLayout(layout);
result->show();
connect(transpose,SIGNAL(clicked()),result,SLOT(accepts()));
}
void Dimensions::accepts()
{
QLabel *results[10][10];
QFrame *answer = new QFrame;
QGridLayout *RLayout = new QGridLayout;
for(int i=0;i<columns;i++){
for(int j=0;j<rows;j++){
results[i][j] = new QLabel(fields[j][i]->text());
results[i][j]->setFixedWidth(30);
RLayout->addWidget(results[i][j],i,j);
}
}
answer->setLayout(RLayout);
answer->show();
}
Я думаю, проблема заключается в том, что вы определяете приемник как объект result
, однако ваш слот находится в классе Dimensions
. Таким образом, вы должны настроить соединение следующим образом:
connect(transpose, SIGNAL(clicked()), this, SLOT(accepts()));
// ---^^^