milka89
(milka89)
28 Lipiec 2010 10:32
#1
już próbowałem to zrobić na wszelkie możliwe sposoby, ale dalej mi działa jak trzeba. Zatrzymałem się na czymś takim:
#include
#include
class button:public QWidget
{
//Q_OBJECT
public:
button(QWidget *parent): QWidget(parent)
{
}
public slots:
void f()
{
QMessageBox::information(0, "safd", "afsdfa", QMessageBox::Ok);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
button *b=new button(&w);
QPushButton *but=new QPushButton("asdfa", &w);
QObject::connect(but, SIGNAL(clicked()), b, SLOT(f()));
w.show();
return a.exec();
}
i dalej mi nie śmiga. Proszę o podpowiedź, co robię ciągle źle. Dlaczego po naciśnięciu przycisku ciągle nie odpala mi się funkcja f?
Marcin240
(Marcin240)
28 Lipiec 2010 11:13
#2
Napisałem ci gotowy kod który tworzy okno główne z przyciskiem, bo kliknięciu w button otrzymujesz komunikat:
main.cpp:
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow *window = new MainWindow();
window->show();
return app.exec();
}
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QPushButton *button;
public:
MainWindow();
private slots:
void f();
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
MainWindow::MainWindow()
{
button = new QPushButton("button", this);
connect(button, SIGNAL(clicked()), this, SLOT(f()));
}
void MainWindow::f()
{
QMessageBox::information(0, "safd", "afsdfa", QMessageBox::Ok);
}
milka89
(milka89)
28 Lipiec 2010 11:39
#3
pozwolę sobie zauważyć, że to co napisałeś, to dokładnie to, do czego ja sam doszedłem, ale rozbite na kilka plików. Aha… no i mój kod się przynajmniej kompiluje.
Marcin240
(Marcin240)
28 Lipiec 2010 11:52
#4
U mnie pod ubuntu mój kod działa bez problemu a twój nie.
milka89
(milka89)
28 Lipiec 2010 12:33
#5
ja to robię na windowsie ubuntu mam oprócz tego, ale myślałem, że tak samo będzie działać i tu i tu…
– Dodane 28.07.2010 (Śr) 14:44 –
działa! źle zaznaczyłem przy kopiowaniu dziękuję tzn. dalej nie czuję, dlaczego twoje rozwiązanie działa, a moje nie, ale pewnie do tego dojdę