LINUX.ORG.RU

Как создать событие срабатывающее на выделение ячейки, точнее возвращающая номер строки этой ячейки?

 


0

2
       QObject::connect(tableworkers.horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sectionClicked(int)));
        
       QObject::connect(tableworkers/*.verticalHeader() */ , &QTableWidget::cellChanged [=]() {

            });
       QObject::connect(tableworkers, &QTableWidget::cellChanged, this, &MyWidget::sectionClicked);

Есть такие варианты и они не компилируются QTableWidget



Последнее исправление: bad_master (всего исправлений: 2)

Ответ на: комментарий от bad_master

Я перестаю понимать, чего ты хочешь добиться. У тебя произошло событие: выделение ячейки. По этому событию генерируется сигнал, который передаёт координаты ячейки: строку и колонку. Всё, что тебе нужно, это соединить этот сигнал с функцией, которая принимает те же аргументы и как-то их обработать. Я тебе чуть упростил задачу и сделал лямбду, которая принимает два аргумента, а сама дёргает функцию с одним. Что ты в этой функции будешь делать — это уже решать тебе, я не телепат и твоей конечной цели не знаю

XMs ★★★★★
()
Ответ на: комментарий от XMs

Нет перегруженной функции для твоего кода

void MyWidget::sectionClicked(int idx, int idx2)
{/*
    if (idx == 0)
        sort_table("select name,reiting,dat,comment from `Default` ORDER BY `name`;");
    if (idx == 1)
        sort_table("select name,reiting,dat,comment from `Default` ORDER BY `reiting`;");
    if (idx == 2)
        sort_table("select name,reiting,dat,comment from `Default` ORDER BY `dat`;");*/
}
...
QObject::connect(tableworkers, &QTableWidget::cellActivated, [this](int row, int column)
           {sectionClicked(row,column); });
...

bad_master
() автор топика
Ответ на: комментарий от XMs

говорит что

E0304	отсутствуют экземпляры перегруженная функция "QObject::connect", соответствующие списку аргументов
и
C2665	"QObject::connect": ни одна перегруженная функция не может преобразовать все типы аргументов	

bad_master
() автор топика
Ответ на: комментарий от XMs

Короче у меня экземпляр tableworkers, а не указатель

QObject::connect(&tableworkers, &QTableWidget::cellActivated, [this](int row, int column){
            sectionClicked(row, column); 
        
        });
так заработало, но не знаю еще будет ли происходить событие upd не работает выделение ячеек P.S. спасибо вот так работает код:
QObject::connect(&tableworkers, &QTableWidget::cellClicked, [this](int row, int column) {
            //sectionClicked(row, column);
            std::cout << "row:" << row << " column:" << column << std::endl;
            });

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 4)
Ответ на: комментарий от bad_master

Короче у меня экземпляр tableworkers, а не указатель

connect(&tableworkers, &QTableWidget::cellActivated, 
	this, &MyWidget::sectionClicked);

Исхожу, что ты connect делаешь где-нибудь в конструкторе MyWidget. Если нет, то последние два аргумента надо поменять

XMs ★★★★★
()