Константин |
Дата 17.2.2009, 2:39 |
|
Цитата(micle7 @ 17.2.2009, 1:12) Скажите еще, если не сложно, как мне вывести переменную "a" на lcd, а переменную "c" на lcd1
#include <QApplication> #include <QPushButton> #include <QWidget> #include <QLCDNumber> #include <iostream> #include <QVBoxLayout>
class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = 0); public slots: int btnClick(); private: QLCDNumber *lcd; QLCDNumber *lcd1; };
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { lcd = new QLCDNumber(3); lcd->display(77);
lcd1 = new QLCDNumber(3);
QPushButton *ok = new QPushButton(tr("Ok"), this); connect(ok, SIGNAL(clicked()), this, SLOT(btnClick())); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(ok); layout->addWidget(lcd); layout->addWidget(lcd1); setLayout(layout); }
int MyWidget::btnClick() { int a = 5; int b = a + 2; int c = b + 5;
lcd->display(a); lcd1->display(c); }
int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } #include "hello.moc"
micle7, учи плюсы, учи кутэ, читай ассистант, задавай вопросы в форуме (весьма желательно именно в такой последовательности)
теперь я понимаю как набить столько "спасибо"-в, как у Юрия жаль, у меня терпения не хватит... |
micle7 |
Дата 17.2.2009, 1:12 |
|
#include <QApplication> #include <QPushButton> #include <QWidget> #include <QLCDNumber> #include <iostream> #include <QVBoxLayout>
class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = 0); public slots: int btnClick(); };
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QLCDNumber *lcd = new QLCDNumber(3); lcd->display(77);
QLCDNumber *lcd1 = new QLCDNumber(3);
QPushButton *ok = new QPushButton(tr("Ok"), this); connect(ok, SIGNAL(clicked()), this, SLOT(btnClick())); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(ok); layout->addWidget(lcd); layout->addWidget(lcd1); setLayout(layout); }
int MyWidget::btnClick() { int a = 5; int b = a + 2; int c = b + 5;
}
int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } #include "hello.moc"
Скажите еще, если не сложно, как мне вывести переменную "a" на lcd, а переменную "c" на lcd1, т.е. смысл следующий, после нажатия кнопки начинается расчет формул и в результате получается несколько переменных, a, b, c, нужно несколько из них вывести в красивой рамочке. |
SABROG |
Дата 16.2.2009, 23:25 |
|
Как вариант еще можно сделать так:
#include <QtGlobal> #include <QtCore/QEventLoop> #include <QtCore/QDebug> #include <QtGui/QApplication> #include <QtGui/QPushButton>
int main(int argc, char *argv[]) { QApplication app(argc, argv); QEventLoop loop; QPushButton btn("Exit"); QObject::connect(&btn, SIGNAL(clicked()), &loop, SLOT(quit())); btn.show(); loop.exec(); qDebug() << "345\n"; return 0; }
Или так, что логичнее:
#include <QtGlobal> #include <QtCore/QDebug> #include <QtGui/QApplication> #include <QtGui/QPushButton>
int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton btn("Exit"); QObject::connect(&btn, SIGNAL(clicked()), &app, SLOT(quit())); btn.show(); int ret = app.exec(); qDebug() << "345\n"; return ret; }
|
Litkevich Yuriy |
Дата 16.2.2009, 23:11 |
|
да, к стати инклюд нужен, т.к. и объявление класса и его реализация, находятся в одном файле |
SABROG |
Дата 16.2.2009, 23:09 |
|
Добавить макрос Q_OBJECT в класс MyWidget и в конце файла main.cpp прописать
#include "main.moc"
Затем make clean && qmake && make release |
Litkevich Yuriy |
Дата 16.2.2009, 23:09 |
|
макрос добавь в начало class MyWidget : public QWidget { Q_OBJECT
|
micle7 |
Дата 16.2.2009, 22:55 |
|
#include <QApplication> #include <QPushButton> #include <QWidget> #include <iostream> class MyWidget : public QWidget { public: MyWidget(QWidget *parent = 0); public slots: void btnClick(); };
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) {
QPushButton *ok = new QPushButton(tr("Ok"), this);
connect(ok, SIGNAL(clicked()), this, SLOT(btnClick())); }
void MyWidget::btnClick() { std::cout << "345\n"; }
int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); }
Скомпилировал этот вариант, в консоли получаю при запуске Object::connect: No such slot QWidget::btnClick() что поправить? |
Litkevich Yuriy |
Дата 16.2.2009, 22:24 |
|
Цитата(ViGOur @ 17.2.2009, 1:14) Только она правда выведется консольном приложении, а не в этом. можно в фал проекта консоль подцепить: CONFIG += console
либо приложение запустить из консоли, тогда будет видно |
ViGOur |
Дата 16.2.2009, 22:14 |
|
#include <QApplication> #include <QPushButton>
class MyWidget : public QPushButton { public: MyWidget(QWidget *parent = 0);
public slot: void btnClick(); };
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) {
connect(this, SIGNAL(clicked()), this, SLOT(btnClick())); }
void MyWidget::btnClick() { std::cout << "345\n"; }
int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } Только она правда выведется консольном приложении, а не в этом. |
micle7 |
Дата 16.2.2009, 22:00 |
|
#include <QApplication> #include <QPushButton> #include <iostream>
int main(int argc, char *argv[]) { QApplication app(argc, argv);
QPushButton *button = new QPushButton("&Ok"); button->show();
std::cout << "345\n"; return app.exec(); }
Подскажите, как запустить выполнение строки std::cout << "345\n"; после того, как я нажму на кнопку? |
Просмотр темы полностью (откроется в новом окне) |
|