crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Не могу получить текущую выделенную строку, QTableWidget и класс наследник QTableWidget
RazrFalcon
  опции профиля:
сообщение 11.3.2011, 20:49
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


.cpp
#include "mainwindow.h"

MainWindow::MainWindow()
{
    table = new tableWidget(this);
    table->setColumnCount(14);
    table->setRowCount(50);
    table->setSelectionBehavior(QAbstractItemView::SelectRows);

    setCentralWidget(table);

    connect(table,SIGNAL(cellClicked(int,int)),this,SLOT(on_cellClicked(int,int)));

    setMinimumSize(800,650);
}

void MainWindow::on_cellClicked(int row,int)
{
    qDebug()<<row;
    qDebug()<<"From MainWindow class"<<table->currentRow();
}

void MainWindow::on_currentRowIndexChanged(int row)
{
    qDebug()<<"From currentRowIndexChanged func"<<table->currentRow();
}

void tableWidget::keyPressEvent(QKeyEvent *event)
{
    MainWindow my;
    qDebug()<<my.table->rowCount();
    qDebug()<<"From tableWidget class"<<my.table->currentRow();
    my.table->setRowCount(600);
    my.on_currentRowIndexChanged(1);

    QTableWidget::keyPressEvent(event);
}


.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtGui>
#include <QtDebug>

class tableWidget : public QTableWidget
{
    Q_OBJECT

public:
    tableWidget(QWidget* parent = 0) {}
    void keyPressEvent(QKeyEvent *event);
};

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();
    tableWidget *table;

public slots:
    void on_cellClicked(int row,int col);
    void on_currentRowIndexChanged(int row);
};
#endif // MAINWINDOW_H


Вывод консоли:
При клике:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 12.3.2011, 23:28
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


1. Сильно не уверен что вот это
my.table->setRowCount(600);

создает 600 строк, создает QTableWidgetItem для каждой ячейки. В assistant че-то вообще нет описания функции, а исходник глянуть что там в этой функции возможности нет сейчас... Хотя может и все правильно тут.

2. Что ты этим хотел сказать?)
my.on_currentRowIndexChanged(1);
.............
void MainWindow::on_currentRowIndexChanged(int row)
{
    qDebug()<<"From currentRowIndexChanged func"<<table->currentRow();
}



Цитата
Вывод консоли:
При клике:

Недописал? Полагаю table->currentRow() что-то типа "-1" выдает. Потому что строку нужно выделить.

А если мышью тыкать в строку?

ЗЫ.
Вместо
"From currentRowIndexChanged func" в linux можно писать qDebug() << __PRETTY_FUNCTION__.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.3.2011, 0:09
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Решено тут =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 13:22