Qt соединение не работает

0

Предполагается, что эта программа возьмет матрицу на основе 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();
}
  • 0
    Не могли бы вы опубликовать вывод консоли или отладочный вывод? Connect напечатает сообщение о том, почему не удалось подключиться, с информацией о классе и сигнале / слоте
  • 0
    извини, я новичок в QT, как ты это делаешь?
Показать ещё 3 комментария
Теги:
qt
connect

1 ответ

1

Я думаю, проблема заключается в том, что вы определяете приемник как объект result, однако ваш слот находится в классе Dimensions. Таким образом, вы должны настроить соединение следующим образом:

connect(transpose, SIGNAL(clicked()), this, SLOT(accepts()));
//                                 ---^^^
  • 0
    Я пробовал, но кнопка все равно ничего не делает
  • 0
    Покажите, что происходит в вашем заголовочном файле.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню