Dziedziczenie po QWidget a spięcie sygnału i slotu

Odpowiedz Nowy wątek
2011-07-28 18:57
0

Witam.

Mam klasę:

class classA : public QWidget
{
  // Q_OBJECT 
  public:
    QPushButton button;
};

Pod ten przycisk chciałbym podpiąć jakąś akcję, ale dodając makro Q_OBJECT dostaję błędy.
Aby można było dodać makro Q_OBJECT to chyba trzeba dziedziczyć do QObject, QMainWindow .. jeśli się mylę to proszę o poprawienie.
Jak podpiąć jakąś akcję pod ten przycisk?

Pozostało 580 znaków

2011-07-28 19:04
0

Bez tego makra nic nie zdziałasz. Pewnie utworzyłeś nową klasę i od razu przebudowałeś projekt.
Wyczyść cały projekt, dodaj te makro, usuń wszystkie MOCe, otwórz plik .pro i dodaj enter na końcu i zapisz. Potem jeszcze raz przebuduj.

BTW. Wszystkie klasy z Qt dziedziczą po QObject, tak jak w Javie wszystko dziedziczy po Object.

edytowany 1x, ostatnio: Razi91, 2011-07-28 19:05
Nieprawda-patrz QGraphicsItem chociażby.Ale znakomita większość dziedziczy - MasterBLB 2011-07-28 19:07
aj, sorry, zapomniałem o tych klasach pomocniczych, że nie dziedziczą po QObject... QVector, QMap, QMatrix itd. też nie dziedziczą. Ale wszystkie widgety dziedziczą. - Razi91 2011-07-28 19:13

Pozostało 580 znaków

2011-07-28 19:06
0

Warunkiem możliwości użycia makra Q_OBJECT jest dziedziczenie bezpośrednie lub pośrednie klasy QObject-zatem dziedziczenie po QWidgecie też będzie dobre.
Natomiast co rozumiesz jako "podpięcie akcji"?Jeśli chcesz,aby po kliknięciu guzika twoja klasa coś robiła,podepnij sygnał guzika clicked() do swojego slotu:

class classA : public QWidget
{
  Q_OBJECT 
 
  public slots:
  void yourSlot(void)
  {
     QMessageBox::about(0,0,"Kliknąłeś guzik");
  }
  public:
    QPushButton button;
};
 
classA::classA(void)
{
  connect(&button,SIGNAL(clicked()),this,SLOT(yourSlot()));
}

"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 2x, ostatnio: MasterBLB, 2011-07-30 00:44

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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