URL: https://linuxfr.org/forums/programmation-c/posts/resolu-qt-envoyer-un-signal-dans-le-slot-d-un-widget-parent Title: [Résolu] Qt envoyer un signal dans le slot d'un widget parent. Authors: WrathOfThePixel Date: 2024年09月30日T19:02:27+02:00 License: CC By-SA Tags: qt Score: 3 Salut ! J'ai pas refais de C++ serieusement depuis le siècle dernier, je m'y remet trèès doucement, à l'aide de Qt. Je pratique assez assiduement PySide6, donc je connais bien déjà certains concepts de la bête. Cependant me voilà bloqué dans la version C++ sur un truc sûrement trivial pour les connaisseurs, mais je ne sais pas trop quoi chercher, donc je me tourne vers vous. La question, en gros, c'est comment connecter un signal d'un widget personnalisé à une méthode de la classe qui instancie le dit widget. Je tente une petit bout de code minimaliste plutôt que me perdre dans des explications. Je vais essayer de le faire le plus précis et juste possible, résultats non-garantis. D'abord la classe du widget personnalisé : ```c++ #include #include #include class CoolWidget : public QWidget { Q_OBJECT public: explicit CoolWidget(QWidget *parent = nullptr) { QHBoxLayout *cool_layout = new QHBoxLayout(this); QPushButton *bouton1 = new QPushButton("Bouton 1"); QPushButton *bouton2 = new QPushButton("Bouton 2"); cool_layout->addWidget(bouton1); cool_layout->addWidget(bouton2); connect(bouton1, &QPushButton::clicked, /* je sais pas quoi mettre ici */); /* pour que ça appelle la méthode bouton1clicked() dans MainWindow */ } } ``` et la classe MainWindow comme ça : ```c++ #include #include #include #include "cool_widget.cpp" class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent) : QMainWindow(parent) { QWidget *central_widget = QWidget; QVBoxLayout *main_layout = QVBoxLayout; /* * Ici je place des widgets dans ma main_layout. */ // Puis enfin le widget CoolWidget. CoolWidget *cool_widget = CoolWidget; main_layout->addWidget(cool_widget); central_widget->setLayout(main_layout); setCentralWidget(central_widget); } // Méthode à appeler lors de l'appui de bouton1 dans CoolWidget void bouton1clicked() { // Je fais des trucs quand le bouton est cliqué } } ``` (bon dans cet exemple il n'y a pas de headers pour simplifier, dans la version "vraie vie" tout est bien séparé en .h et .cpp) Voilà, si quelqu'un peut me donner un coup de pouce, d'avance bien le merci :)

AltStyle によって変換されたページ (->オリジナル) /