queue1.h mainwindow.h
/ /
A.h---Mainwindow.cpp
A #include queue1 Mainwidow #include A A и MainWindow должны использовать один экземпляр queue1, поэтому я определяю его в A как «static queue1 q1;»Затем в Ah я нажимаю «A» в q1, но когда я пытаюсь вывести его в главное окно, я получаю мусор.Когда я пытаюсь нажать «mainwindow» внутри mainwindow.h, а затем вывести его, все в порядке.Я использую Qt 4.7.0 и выигрываю 7.
queue1.h
#ifndef QUEUE1_H
#define QUEUE1_H
#include <queue>
#include <string>
class queue1
{
public:
queue1();
std::queue<std::string> q;
};
#endif // QUEUE1_H
А *
#ifndef A_H
#define A_H
#include "queue1.h"
static queue1 q1;
class A
{
public:
A(){q1.q.push("A");}
};
#endif // A_H
Если вы раскомментируете "q1.q.push ("MainWindow");»программа сначала выведет "mainwondow", а затем корзину.После этого очередь становится пустой.
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "a.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//q1.q.push("mainwindow");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
ui->label->setText(q1.q.front().c_str());
q1.q.pop();
}
Для этого тестового проекта я не изменил mainwindow.h, но здесь он есть.
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
};
#endif // MAINWINDOW_H