в моей программе Qt Мне нужно диалоговое окно для отправки сигнала в слот в главном окне. Я установил соединение правильно, насколько мне известно, и он не дает мне никаких ошибок во время компиляции или запуска, но по какой-то причине он просто ничего не делает, когда нажата кнопка, которая должна активировать сигнал. Почему это происходит?Сигналы и слоты, не работающие в qt
beastiary.h (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 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);
}
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();
}
я пропустить большую часть кода, просто не имеет ничего общего с реальным механизмом сигналов и слотов в игре здесь.
Где вы выполняете диалог ? – krzaq
'void Beastiary :: on_pushButton_clicked() { Диалог * ad = новый Диалог (это); ad-> show(); } 'В главном окне это кнопка, которая вызывает диалог – Nick
См. Http://stackoverflow.com/q/26422154/1421332 – Silicomancer