Qt C++ QTableView - jak uzyskać numer indexu w ktory sie kliknie
Ostatnio zmodyfikowano 2016-01-01 12:44
yerbaguy Temat założony przez niniejszego użytkownika |
Qt C++ QTableView - jak uzyskać numer indexu w ktory sie kliknie » 2015-12-30 01:53:21 Witam, Czy mógłbym poprosić o wskazówkę w jaki sposób pobrać numer wiersza komponentu QTableView w który aktualnie kliknąłem. Przegooglałem trochę stron, znalazłem parę informacji, ale dalej bez pozytywnych rezultatów. Ten kawałek implementacji który mam i nie działa wygląda jak poniżej: void Practice_TimeTable::on_tableView_day_timetable_activated( const QModelIndex & index ) { int rows = ui->tableView_day_timetable->currentIndex().row(); qDebug() << rows; }
|
|
mateczek |
» 2015-12-30 06:23:10 void Practice_TimeTable::on_tableView_day_timetable_activated( const QModelIndex & index ) { qDebug() << "jestem w slocie row= " << index.row(); }
nie sprawdzałem (mogę dopiero po południu) ale ja tak bym próbował |
|
yerbaguy Temat założony przez niniejszego użytkownika |
» 2015-12-31 08:40:25 dzięki za odpowiedz mateczek. To już zrobiłem. Trochę sobie googlami pomogłem. Połączyłem SLOT z QTableView, jak poniżej: connect( ui->tableView_day_timetable->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( slotSelectionChange( QItemSelection, QItemSelection ) ) );
Slot: void Practice_TimeTable::slotSelectionChange( const QItemSelection &, const QItemSelection & ) { QModelIndexList selection = ui->tableView_day_timetable->selectionModel()->selectedIndexes(); foreach( QModelIndex index, selection ) { row = index.row(); } qDebug() << row; }
Teraz kolejna rzecz nad którą się zastanawiam to jak przekazać do widoku innej klasy ( widok tej innej klasy się uruchamia w momencie kliknięcia w dany index komponentu QTableView ) wartość tej zmiennej row. Chcę zrobić tak żeby w momencie uruchamiania tego widoku, była odpytywana baza o zawartość danego wiersza czy coś tam jest czy nie na podstawie wartości tej zmiennej. Sam widok uruchamiam w metodzie QTableView - clicked - jak poniżej: Nazwa_klasy * wkaznik_do_nazwy_klasy = new Nazwa_klasy(); wkaznik_do_nazwy_klasy->run();
Przekazac tę zmienną można np poprzez dziedziczenie. Tylko właśnie tutaj mam z tym problem. Dziedziczenie klas zrobiłem jak poniżej: #ifndef PRACTICE_TIMETABLE_H #define PRACTICE_TIMETABLE_H #endif
#ifndef PRACTICE_TIMETABLE_ADD_H #define PRACTICE_TIMETABLE_ADD_H
#include <QMainWindow>
#include "practice_timetable.h"
namespace Ui { class Practice_TimeTable_Add; }
class Practice_TimeTable_Add : public QMainWindow , public Practice_TimeTable { Q_OBJECT public: explicit Practice_TimeTable_Add( QWidget * parent = 0 ); ~Practice_TimeTable_Add(); private: Ui::Practice_TimeTable_Add * ui; };
#endif
ale jako wynik kompilacji dostaję błąd: expected class - name before '(' token
|
|
mateczek |
» 2015-12-31 21:35:04 |
|
yerbaguy Temat założony przez niniejszego użytkownika |
» 2016-01-01 12:44:50 dzięki za informacje. A w ogóle to Najlepszego w Nowym Roku :). A powiedz jak sobie poradzić w momencie gdy np są dwie klasy i teraz w drugiej włączam info o pierwszej poprzez include czyli np: natomiast w pierszej włączam info o drugiej tez przez include po to żeby w metodzie on click komponentu QTableView dodać kod, który to spowoduje, że w momencie kliknięcia w którykolwiek index QTableView wyświetli się widok tej drugiej klasy? Chodzi poprostu o to, że teraz zacząl być problem z Znalazłem informację, że można np wykorzystać MACRO QT_FORWARD_DECLARE_CLASS( np.klasa_druga )
, niestety jednak to nie działa dostaję błąd typu: 'Practice_TimeTable' does not name a type
|
|
« 1 » |