crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Выполнить после нажатия на кнопку
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Константин Дата 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"; после того, как я нажму на кнопку?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:47