Цитата(silver47 @ 14.4.2010, 6:56)
Есть два класса, наследованые от QWidget, каждый выполняет свою работу. Один из них предоставляет поле для ввода информации и 2 кнопки, Ок + Отмена, нужно чтобы второй запускался и создавался только, если нажата кнопка Ок, при нажатии кнопки отмена, происходило закрытие приложения. Как это возможно сделать?
Спасибо.
CODE
#include <QtGui/QApplication>
#include "widget.h"
#include "widget2.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
widget2 w2;
QObject::connect(&w, SIGNAL(signalOK()), &w2, SLOT(slot()));
QObject::connect(&w2, SIGNAL(signal()), &w, SLOT(slotVisible()));
QObject::connect(&w, SIGNAL(signalCancel()), &w, SLOT(close()));
w.show();
return a.exec();
}
CODE
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QObject::connect(ui->pushOK, SIGNAL(clicked()), this, SLOT(slotOK()));
QObject::connect(ui->pushCancel, SIGNAL(clicked()), this, SLOT(slotCancel()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::changeEvent(QEvent *e)
{
QWidget::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void Widget::slotOK()
{
emit signalOK();
}
void Widget::slotVisible()
{
close();
}
void Widget::slotCancel()
{
emit signalCancel();
}
CODE
#include "widget2.h"
#include "ui_widget2.h"
widget2::widget2(QWidget *parent) :
QWidget(parent),
ui(new Ui::widget2)
{
ui->setupUi(this);
}
widget2::~widget2()
{
delete ui;
}
void widget2::changeEvent(QEvent *e)
{
QWidget::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void widget2::slot()
{
show();
emit signal();
}
Определение класса я думаю выкладывать не надо.
хз мб я и криво сделал где можно что улучшит напишите плиз буду признателен