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

28.11.2010
9
0
#1
сама программа до безобразия проста и бессмысленна,но суть не в этом. и т.к. в 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();
}
 
R

rrrFer

#2
не уверен что поможет, т.к. тут не полный код, но попробуйте использовать public Наследование:
Код:
class MyApplication: public QApplication{
Добавлено: а еще, скажите зачем вам все это надо? ) - МБ помогу
 
28.11.2010
9
0
#4
с public при сборке ошибок почему то ещё больше,а именно с конструктором и деструктором) вообще задание заключается в создании ллюбого графического приложения в Qt на основе заданных примера и шаблона,чтобы как минимум использовались QCheckBox и QLabel
 
28.11.2010
9
0
#6
хотелось бы побыстрее доделать,т.к. дальше до конца семестра предстоит заниматься объёмным проектом
 
R

rrrFer

#7
задание заключается в создании ллюбого графического приложения в Qt на основе заданных примера и шаблона,чтобы как минимум использовались QCheckBox и QLabel
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;
}
Вроде бы должно работать, но правил прямо на форуме, Мб опечатался.