LINUX.ORG.RU

QTableWidget сигналы из виджетов, добавленных через QTableWidget::setCellWidget

 ,


0

2

Здравствуйте
Имеется код(приведен фрагмент):
...

QLineEdit * summ = new QLineEdit;
tableWidget->setCellWidget(1, 1, summ);
connect(summ, SIGNAL(textChanged(QString)), this, SLOT(summ_change()));
...
Строк с таким добавлением виджета QLineEdit много, для каждого из этих виджетов устанавливается СЛОТ summ_change().
Как мне потом внутри этого слота определить номер строки того QLineEdit, для которого вызвался СЛОТ?

★★★★★

Используй QTableView с моделью и делегатом, QTableWidget не предназначен для масштабного использования

annulen ★★★★★
()
connect(summ, SIGNAL(textChanged(QString)), this, SLOT(summ_change()));

Типы параметров и их количество в сигнале должны совпадать с типами и количеством в слоте.

twentypercentcooler
()
Ответ на: комментарий от twentypercentcooler
class A : public QObject
{
    Q_OBJECT
public:
    void doEmit() {
        emit someSignal(QString("Hello"), 42);
    }
signals:
    void someSignal(QString, int); 
};

class B : public QObject
{
    Q_OBJECT
   
public slots:
    void someSlot(const QString& value) {
        qDebug() << value;
    }
};

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

    QCoreApplication app(argc, argv);
    A a;
    B b;
    QObject::connect(&a, &A::someSignal, &b, &B::someSlot);

    a.doEmit();

    return app.exec();
}

#include "main.moc"
$ ./test 
"Hello"
^C
fluorite ★★★★★
()
Ответ на: комментарий от twentypercentcooler

The signals and slots mechanism is type safe: The signature of a signal must match the signature of the receiving slot. (In fact a slot may have a shorter signature than the signal it receives because it can ignore extra arguments.)

А новый синтаксис запилили с 5 версии.

fluorite ★★★★★
()
Последнее исправление: fluorite (всего исправлений: 1)
Ответ на: комментарий от CrazyAlex25
connect(&a, static_cast<void (A::*)(int)>(&A::someSignal), &b, &B::someSlot);
fluorite ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.