Пример использования qcheckbox и qlabel в qt

Тема в разделе "Использование Qt", создана пользователем SchwarzeWolfin, 25 окт 2011.

  1. SchwarzeWolfin

    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    сама программа до безобразия проста и бессмысленна,но суть не в этом. и т.к. в Qt раньше работать не приходилось возникло некоторое недопонимание. объясните чайнику как правильно работать с наследованием,чтобы в дальнейшем избегать подобных ошибок (в данном случае проблема со строкой return app.exec())

    Код (Text):
    #include <QtGui>

    using namespace std;

    class MyApplication: QApplication{
    public:
    MyApplication(int&,char**);
    ~MyApplication();
    public slots:
    void resultClicked(QCheckBox*box1,QCheckBox*box2,QMessageBox*mbox,QVBoxLayout*layout1){
    if(box1->isChecked())
    if(box2->isChecked())
    mbox->setText("you like apples & oranges");
    else
    mbox->setText("you like apples");
    else
    if(box2->isChecked())
    mbox->setText("you like oranges");
    else
    mbox->setText("you don't like this fruits");
    }

    };

    int main(int argc, char *argv[])
    {
    MyApplication app(argc,argv);
    QWidget *window=new QWidget;
    window->setWindowTitle("What fruits do you like?");
    QLabel *label=new QLabel ("What fruits do you like?");
    QCheckBox *box1=new QCheckBox("apples");
    QCheckBox *box2=new QCheckBox("oranges");
    QPushButton *result=new QPushButton("Result");
    QMessageBox *mbox=new QMessageBox;
    QVBoxLayout *layout1=new QVBoxLayout;
    QVBoxLayout *layout2=new QVBoxLayout;
    QVBoxLayout *layout3=new QVBoxLayout;
    QVBoxLayout *layout4=new QVBoxLayout;
    layout2->addWidget(label);
    layout3->addWidget(box1);
    layout3->addWidget(box2);
    layout4->addWidget(result);
    layout1->addLayout(layout2);
    layout1->addLayout(layout3);
    layout1->addLayout(layout4);
    layout1->addWidget(mbox);
    window->setLayout(layout1);
    QObject::connect(result,SIGNAL(clicked()),qApp,SLOT(resultClicked()));

    window->show();
    return app.exec();
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    не уверен что поможет, т.к. тут не полный код, но попробуйте использовать public Наследование:
    Код (Text):
    class MyApplication: public QApplication{
    Добавлено: а еще, скажите зачем вам все это надо? ) - МБ помогу
     
  3. SchwarzeWolfin

    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    с public при сборке ошибок почему то ещё больше,а именно с конструктором и деструктором) вообще задание заключается в создании ллюбого графического приложения в Qt на основе заданных примера и шаблона,чтобы как минимум использовались QCheckBox и QLabel
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    SchwarzeWolfin
    вам срочно?
     
  5. SchwarzeWolfin

    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    хотелось бы побыстрее доделать,т.к. дальше до конца семестра предстоит заниматься объёмным проектом
     
  6. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    main.cpp:
    Код (Text):
    #include <QApplication>
    #include "dialog.h"

    int main( int argc, char **argv ) {
    QApplication a( argc, argv );

    Dialog Dlg;
    Dlg .show();

    return a .exec();
    }
    dialog.h:
    Код (Text):
    #ifndef DIALOG_H
    #define DIALOG_H

    #include <QCheckBox>
    #include <QDialog>
    #include <QGridLayout>
    #include <QLabel>

    class Dialog : public QDialog {
    Q_OBJECT
    public:
    Dialog ();
    ~Dialog ();
    private:
    QGridLayout *layout;
    QLabel   *label;
    QCheckBox  *checkBox;
    };
    #endif
    dialog.cpp:
    Код (Text):
    #include "dialog.h"
    Dialog ::Dialog () {
    checkBox = new QCheckBox();
    label = new QLabel;
    layout = new QGridLayout;

    label ->setText( "Hello world " );

    layout ->addWidget(label,0,0,1,1);
    layout ->addWidget(checkBox, 0,1,1,1);
    setLayout( layout );
    }
    Dialog ::~Dialog () {
    delete label;
    delete checkBox;
    delete layout;
    }
    Вроде бы должно работать, но правил прямо на форуме, Мб опечатался.
     
  7. SchwarzeWolfin

    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    r04 ,спасибо.
    ну это не столь важно,главно сам принцип понятен
     
Загрузка...
Похожие Темы - Пример использования qcheckbox
  1. Vunderkind
    Ответов:
    4
    Просмотров:
    3.288
  2. morpheus
    Ответов:
    0
    Просмотров:
    12.386
  3. Генералл
    Ответов:
    5
    Просмотров:
    131
  4. tumanovalex
    Ответов:
    1
    Просмотров:
    824
  5. StarikStarik2705
    Ответов:
    3
    Просмотров:
    1.686

Поделиться этой страницей