1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

  1. SchwarzeWolfin

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

    Код:
    #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 Гость

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

    PrimatYarik Гость

    Репутация:
    0
  4. SchwarzeWolfin

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

    rrrFer Гость

    Репутация:
    0
    SchwarzeWolfin
    вам срочно?
     
  6. SchwarzeWolfin

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

    rrrFer Гость

    Репутация:
    0
    main.cpp:
    Код:
    #include <QApplication>
    #include "dialog.h"
    
    int main( int argc, char **argv ) {
    QApplication a( argc, argv );
    
    Dialog Dlg;
    Dlg .show();
    
    return a .exec();
    }
    dialog.h:
    Код:
    #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:
    Код:
    #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;
    }
    Вроде бы должно работать, но правил прямо на форуме, Мб опечатался.
     
  8. SchwarzeWolfin

    Репутация:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    r04 ,спасибо.
    ну это не столь важно,главно сам принцип понятен
     
Загрузка...

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