ошибка от Qt неразрешенной C2019

Я записываю в заголовочный файл приватные слоты и компилятор выдает ошибку:

d:\qtproject\new123\mainwindow.h:31: error: C2059: syntax error : 'public'

Пожалуйста, помогите мне. Я изменил на public, но без разницы. Когда я очищаю ‘public / private slots’, ошибка не появляется, но пишет
загрузка D: \ Qtproject \ new123 \ debug \ new123.exe …
QObject :: connect: такого слота нет. QPushButton :: changes () в main.cpp: 18
QObject :: connect: такого слота нет. QPushButton :: Move () в main.cpp: 27

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void changed();
void moved();
signals:
void clicked();
private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

}

MainWindow::~MainWindow()
{
delete ui;
}

void moved()
{
QPushButton a;
a.move(100,100);
}
void changed()

{   QPushButton g;
g.setStyleSheet("QPushButton { background-color : white; color :blue; }");
}

main.cpp
#include "mainwindow.h"#include <QApplication>
#include <QLabel>
#include <QPushButton>int main(int argc, char *argv[])
{

QApplication a(argc, argv);

MainWindow w;

QPushButton s("Change Color", &w);
s.setStyleSheet("QPushButton { background-color : white; color :pink; }""QPushButton:pressed { color: blue; }");
QObject::connect(&s, SIGNAL(clicked()), &s, SLOT(changed()));
QPushButton d("Quit", &w);
d.setStyleSheet("QPushButton { background-color : white; color :black; }");
QObject::connect(&d, SIGNAL(clicked()), qApp, SLOT(quit()));
d.move(100,0);
QPushButton f("Move Button", &w);
f.move(200,0);
f.setStyleSheet("QPushButton { background-color : white; color :green; }");

QObject::connect(&f, SIGNAL(clicked()), &f, SLOT(moved()));

w.show();

return a.exec();

}

-5

Решение

Вы должны изучить C ++, прежде чем изучать Qt.

Вы заявляете moved() а также changed() как методы MainWindow, но затем определите их как свободные функции в исходном файле. Затем вы пытаетесь подключить QPushButton::clicked() в эти слоты, но скажите connect(..) метод, что слоты принадлежат QPushButton вместо MainWindow,

В вашем moved() а также changed() функции, которые вы создаете QPushButton в каждом, но не давайте им родителей и не добавляйте их в макет (чтобы они не были видны). Вы также создаете их в стеке, поэтому они уничтожаются по завершении функций.

1

Другие решения


По вопросам рекламы [email protected]