jaki sygnał qt emituje po wybraniu pozycji z qviewlist ?

0

Sprawdzałem sygnały:

  • clicked()
  • selectionChanged()

po uruchomieniu programu w programie qt creator otrzymuję taki komunikat:
Object::connect: No such signal QListView::clicked(QListViewItem *, const QPoint &, int) in dialogRank.cpp:71
Object::connect: (sender name: 'userAddImageListView')
oraz odpowiedni dla selectionChanged.

Szukałem po googlach, szukałem w manualu qt i nie mogę znaleźć jakiego sygnału należy użyć.

0

dokumentacji nie umiesz czytać?
Tu masz listę sygnałów dla QListView
Czytasz i widzisz, że to dziedziczy jeszcze sygnały po QAbstractItemView.
A tam stoi jak byk parę sygnałów do wyboru do koloru (żadnego selectionChanged NIE MA).

Jak masz kłopoty z czytaniem dokumentacji, to przynajmniej zainstaluj sobie Qt Creator. On ma trochę lepszy uzupełniacz kodu (dla Qt) i podpowiada jakie są dostępne sloty/sygnały.

0

mam zainstalowane qt creator i najbardziej poprawnym sygnałem dla kliknięcie wydawałby się indexesMoved(QModelIndexList), ale jak wpisuje go to błąd już się wprawdzie nie pojawia, ale funkcja (slot) się nie wykonuje.

0

Czy ty znasz angielski? Bez tego języka w programowaniu ani rusz!

Trolltech napisał(a)

void QListView::indexesMoved ( const QModelIndexList & indexes ) [signal]

This signal is emitted when the specified indexes are moved in the view.
To nie ma nic wspólnego z clicked lub selectionChanged. Na polski sygnał jest emitowany, gdy podany indeks pojawia się w widoku (dosłownie: wprowadza się do), czyli jest emitowany podczas scroll'a.

Co ty chcesz właściwie zrobić? Kiedy ma być emitowany ten sygnał? Może: QAbstractItemView::activated albo QAbstractItemView::entered?

0

Chce zrobić coś takiego, że jak wybiorę jakąś pozycję na liście poprzez kliknięcie to uruchomi mi się odpowiednia funkcja (slot). W tej funkcji wykonywana byłaby różna akcja ak np. aktywacja przycisku (enable), lub wpisanie okreslonego tekstu w koknretne elementy.

0

Skoro masz zainstalowany QTCreator to co to za problem w zakładce Signals and slots editor wybrać sygnał clicked lub doubleclicked, zaimplementować odpowiedni slot dla tego sygnału ?

Wtedy pod tym slotem zrobisz co będziesz chciał.

0
Herk napisał(a)

Skoro masz zainstalowany QTCreator to co to za problem w zakładce Signals and slots editor wybrać sygnał clicked lub doubleclicked, zaimplementować odpowiedni slot dla tego sygnału ?

Wtedy pod tym slotem zrobisz co będziesz chciał.

Piszesz o qt designerze, ja zrezygnowałem z korzystania z tego elementu z kilku powodów:

  • przy projektowaniu aplikacji nie oddziela kodu programu od nagłówka (wszystko wpisuje w pliku h)
  • występuje duża fragmentacja kodu (kod umieszczany jest w pliku ui_plik.h, plik.h, plik.cpp)
  • ...

jak już pisałem clicked zwraca mi błąd

0

Porównajmy:

wafcio napisał(a)

Object::connect: No such signal QListView::clicked(QListViewItem *, const QPoint &, int) in dialogRank.cpp:71
Object::connect: (sender name: 'userAddImageListView')

Trolltech napisał(a)

void QAbstractItemView::clicked ( const QModelIndex & index ) [signal]

This signal is emitted when a mouse button is clicked. The item the mouse was clicked on is specified by index. The signal is only emitted when the index is valid.

Ktoś tu naprawdę ma oczopląs i nie widzi tej oczywistej różnicy.

Mam już tego tematu naprawdę dość (jakby kopać się z koniem):

void twojaKlasa::init()
{
     QListView *itemView = new QListView(this);
     Q_ASSERT( 
          QObject::connect( itemView, SIGNAL(clicked(const QModelIndex &)), 
               this, SLOT(itemClicked(const QModelIndex &))) 
     );
}

/* to ma być slot */
void twojaKlasa::itemClicked(const QModelIndex & itemIndex)
{
     int y = itemIndex.row();
     int x = itemIndex.column();

    ....
}

nagłówek

class twojaKlasa : public QWIdget /* alo coś innego */
{
     Q_OBJECT // jesteś pewien że tego nie zapomniałeś?
     // to jest najczęstszy błąd początkujących w Qt

private:
     void init();
protected slots:
     void itemClicked(const QModelIndex & itemIndex);

private:
     QListView *itemView;
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1