dans mon programme Qt J'ai besoin de la boîte de dialogue pour envoyer un signal à un slot dans la fenêtre principale. J'ai établi la connexion correctement au meilleur de ma connaissance et il ne me donne pas d'erreurs pendant la compilation ou l'exécution, mais pour une raison quelconque, il ne fait rien lorsque le bouton qui est censé activer le signal est cliqué. Pourquoi cela arrive-t-il?Les signaux et les slots ne fonctionnent pas en qt
beastiary.h (en-tête de mainwindow)
namespace Ui {
class Beastiary;
}
class Beastiary : public QMainWindow
{
Q_OBJECT
public:
explicit Beastiary(QWidget *parent = 0);
Ui::Beastiary *ui;
QStringList MyList;
~Beastiary();
public slots:
void refresh();
private slots:
void on_pushButton_clicked();
void on_listWidget_itemClicked(QListWidgetItem);
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
beastiary.cpp (mainwindow fichier cpp)
Beastiary::Beastiary(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Beastiary)
{
ui->setupUi(this);
Dialog dialog;
connect(&dialog, SIGNAL(gorefresh()),this, SLOT(refresh())) ;
void Beastiary::refresh()
{
qDebug() << "recieved";
ui->listWidget->clear();
QString path = "C:/Program Files/Bargest/bin";
QDir myPath(path);
myPath.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
MyList = myPath.entryList();
ui->listWidget->addItems(MyList);
}
de dialog.h
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
signals:
void gorefresh();
private slots:
void on_pushButton_done_clicked();
void on_pushButton_cancel_clicked();
void on_pushButton_clicked();
private:
Ui::Dialog *ui;
dialog.cpp
void Dialog::on_pushButton_done_clicked()
{
emit gorefresh();
}
J'ai quitté en grande partie du code qui viennent rien à voir avec le mécanisme des signaux réels et les créneaux horaires en jeu ici.
Où vous exécutez la boîte de dialogue ? – krzaq
'void Beastiary :: on_pushButton_clicked() { Dialog * ad = nouveau Dialogue (this); ad-> show(); } 'Dans la fenêtre principale, c'est le bouton poussoir qui ouvre la boîte de dialogue – Nick
Voir http://stackoverflow.com/q/26422154/1421332 – Silicomancer