Russian Qt Forum

Программирование => С/C++ => Тема начата: HirurG. от Апреля 17, 2011, 14:19



Название: [решено] проблемы с connect
Отправлено: HirurG. от Апреля 17, 2011, 14:19
Здравствуйте! Мне необходимо написать программу, обрабатывающую некоторые данные в таблице, но для начала я хотел бы, чтобы можно было задавать размерность таблицы из виджета QLineEdit. Однако, в строке
Код:
Object::connect(&leN,SIGNAL(textChanged(QString)), &mainwindow, SLOT(setRange()));
возникает ошибка
/home/Дмитрий/Lab_2-build-desktop/../ЧислМет/Lab_2/main.cpp:23: error: no matching function for call to ‘QObject::connect(QLineEdit**, const char*, MainWindow*, const char*)’
Перекопал весь интернет, помогите пожалуйста  >:( весь код программы:

mainwindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QObject>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

public slots:
    void setRange();
};

#endif // MAINWINDOW_H
main.cpp
Код:
#include <QtGui/QApplication>
#include <QtGui>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    int n = 3;

    MainWindow mainwindow;
    QWidget wgt;

    QHBoxLayout* phbxToolLayout = new QHBoxLayout;
    QVBoxLayout* pvbxLayout = new QVBoxLayout;

    QLabel* lblN = new QLabel("Vvedite razmernost' matrici");
    QLineEdit* leN = new QLineEdit;
    QPushButton* pbN = new QPushButton("Enter");
    QTableWidget tbl(n, n);

    QObject::connect(&leN,SIGNAL(textChanged(QString)),
                     &mainwindow, SLOT(setRange()));

    phbxToolLayout->addWidget(lblN);
    phbxToolLayout->addWidget(leN);
    phbxToolLayout->addWidget(pbN);
    pvbxLayout->addLayout(phbxToolLayout);
    pvbxLayout->addWidget(&tbl);

    wgt.setLayout(pvbxLayout);
    wgt.show();

    return a.exec();
}
mainwindow.cpp
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

void MainWindow::setRange()
{
    // code
}

MainWindow::~MainWindow()
{
    delete ui;
}



Название: Re: проблемы с connect
Отправлено: blood_shadow от Апреля 17, 2011, 14:35
запись в строке ошибки "QLineEdit**"
ничего не говорит? leN - и есть указатель, а ты пытаешься передать указатель на указатель

вот так будет правильно
Object::connect(leN,SIGNAL(textChanged(QString)), &mainwindow, SLOT(setRange()));

+
#include <QObject> можно убрать и можно просто писать connect вместо Object::connect,
так как твой виджет есть непрямым потомком QObject'a


Название: Re: проблемы с connect
Отправлено: HirurG. от Апреля 17, 2011, 14:44
blood_shdow, спасибо огромное!!! только второй совет не прокатил ;)
ЗЫ: в заголовок темы "решено" добавлять? :)


Название: Re: проблемы с connect
Отправлено: blood_shadow от Апреля 17, 2011, 15:07
blood_shdow, спасибо огромное!!! только второй совет не прокатил ;)
ЗЫ: в заголовок темы "решено" добавлять? :)
да, я ошибся так как у тебя connect делается вне определения класса, то нужно
полностью писать
да, добавляй решено