Russian Qt Forum
Января 18, 2025, 13:00
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
подключение класса, наследование
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: подключение класса, наследование (Прочитано 6994 раз)
Firefox
Гость
подключение класса, наследование
«
:
Июня 11, 2010, 13:22 »
Здравствуйте. помогите решить такую задачку: есть основной класс с формой( с использованием qt), к нему хочу подключить другой класс. в другом классе создаётся фрейм , на котором рисуются определённые графики.Второй класс унаследовала от QWidget и подключила к нему хидер формы. всё ничего, но при нажатии на кнопку должен открыться новый фрейм, а вместо этого открывается ещё один экземпляр программы с фреймом этим.
вот код программы:
основной класс .cpp
main_class::main_class(QWidget *parent, Qt::WFlags flags,char *argv[])
: QWidget(parent, flags)
{
ui.setupUi(this);
....
tex= new Texnology;
}
// слот на кнопку по которой открывается фрейм новый(должно происходить обращение к фунции второго класса)
void main_class::on_bn_TEXN_clicked()
{
tex->main_func();
}
основной класс .h
#include "Texnology.h"
#include "ui_main_class.h"
class main_class : public QWidget
{
Q_OBJECT
public:
main_class(QWidget *parent = 0, Qt::WFlags flags = 0,char *argv[]='\0');
~main_class();
.....
private:
Ui::main_classClass ui;
void keyPressEvent(QKeyEvent * ev);
bool eventFilter(QObject *obj, QEvent *event);
XchangeSystemClient *pClient_dev;
Texnology *tex;
подключаемый класс .h
#include "ui_main_class.h"
#include <QtGui>
#include <QFile>
#include <QImage>
#include <QPainter>
#include <QFrame>
#include"Include/Driver.h"
#include "Include/palette.h"
#define PI_180 180.f/3.141593
class Texnology: public QWidget
{
Q_OBJECT
public:
Texnology(QWidget *parent = 0, Qt::WFlags flags = 0);
~Texnology();
QFrame *fr_Verh,*fr_Niz_ATGS_A,*fr_Niz,*fr_3,*frame_texnologia_grafika;
QLineEdit *edit_P,*edit_KU,*edit_Dist;
QImage *img,*img1,*img2,*img3,*img4;
QPainter *paint,*paint1;
QTimer *time_draw;
void draw_atgs_a();
void draw_atgs();
void draw_KS();
int vodopad_KS(int KS);
int vodopad_atgs(int Vod);
void draw_xn_cetka();
void atgs_color();
float calculate_xn();
void draw_xn();
void pomexa_view();
void Grafik_ATGS_A();
void draw_pomexa();
void main_func();
int flag,flag_atgs_a,flag_ks,flag_pom,flag1,flag2,flag3,mass_color[818]
,flag_atgs,XN,rez_dezyrn;
float mas_atgs_a[819],fl_mas,mas[721],mas_pom[708];
private:
bool eventFilter(QObject *obj, QEvent *event);
void mouseMoveEvent(QMouseEvent * xy_cur);
void keyPressEvent(QKeyEvent * ev);
private slots:
void D_time();
};
подключаемый класс .cpp
#include "Texnology.h"
Texnology::Texnology(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
frame_texnologia_grafika=new QFrame();
frame_texnologia_grafika->setGeometry(0,0,1280,1024);
frame_texnologia_grafika->setBackgroundColor(QColor(77,77,79));
frame_texnologia_grafika->setAutoFillBackground(true);
fr_Verh=new QFrame(frame_texnologia_grafika);
fr_Verh->setGeometry(200, 40, 870, 361);
fr_Verh->setBackgroundColor(QColor(77,77,79));
fr_Verh->setAutoFillBackground(true);
fr_Niz_ATGS_A=new QFrame(frame_texnologia_grafika);
fr_Niz_ATGS_A->setGeometry(200, 400, 870, 120);
fr_Niz_ATGS_A->setBackgroundColor(QColor(77,77,79));
fr_Niz_ATGS_A->setAutoFillBackground(true);
fr_Niz=new QFrame(frame_texnologia_grafika);
fr_Niz->setBackgroundColor(QColor(77,77,79));
fr_Niz->setAutoFillBackground(true);
fr_Niz->setGeometry(200, 519, 870, 441);
fr_3=new QFrame(frame_texnologia_grafika);
fr_3->setBackgroundColor(QColor(77,77,79));
fr_3->setAutoFillBackground(true);
fr_3->setGeometry(200, 519, 870, 441);
edit_P=new QLineEdit(fr_3);
edit_P->setGeometry(30, 5, 60, 22);
edit_KU=new QLineEdit(fr_3);
edit_KU->setGeometry(30, 5, 60, 22);
edit_Dist=new QLineEdit(fr_3);
edit_Dist->setGeometry(30, 5, 60, 22);
img=new QImage(fr_Verh->width(),fr_Verh->height()*2,QImage::Format_RGB32);
img1=new QImage(fr_Niz_ATGS_A->width(),fr_Niz_ATGS_A->height()*2,QImage::Format_RGB32);
img2=new QImage(fr_Niz->width()*2,fr_Niz->height()*2,QImage::Format_RGB32);
img3=new QImage(fr_Niz->width()*2,fr_Niz->height()*2,QImage::Format_RGB32);
img4=new QImage(fr_Niz->width()*2,fr_Niz->height()*2,QImage::Format_RGB32);
time_draw=new QTimer(this);
connect(time_draw,SIGNAL(timeout()), SLOT(D_time()));
fr_Verh->show();
fr_Niz_ATGS_A->show();
fr_Verh->installEventFilter(this);
fr_Niz_ATGS_A->installEventFilter(this);
fr_Niz->installEventFilter(this);
this->installEventFilter(this);
paint=new QPainter(img2);
paint->setPen(QColor(0,0,0));
paint->setBrush(QColor(0,0,0));
paint->drawRect(20,10,820,fr_Niz->height()*2);
delete paint;
paint1=new QPainter(img3);
paint1->setPen(QColor(0,0,0));
paint1->setBrush(QColor(0,0,0));
paint1->drawRect(20,10,820,fr_Niz->height()*2);
delete paint1;
paint1=new QPainter(img4);
paint1->fillRect(0,0,870,441,QBrush(QColor(77,77,77)));
paint1->setPen(QColor(0,0,0));
paint1->setBrush(QColor(0,0,0));
paint1->drawRect(20,0,728,fr_Niz->height()*2);
delete paint1;
setMouseTracking(TRUE);
fr_Verh->setMouseTracking(TRUE);
flag=0;flag_atgs_a=0;flag_ks=0;flag_pom=0;flag1=0;flag2=0;flag3=0;flag_atgs=0;XN=0;
rez_dezyrn=0;fl_mas=0;
}
Texnology::~Texnology()
{
}
Texnology::~Texnology()
{
}
void Texnology:
_time()
{
update();
}
void Texnology::main_func()
{
frame_texnologia_grafika->show();
time_draw->start(1000);
}
// далее функции прорисовки
может стоит класс унаследовать от main_class а не от QWidget?помогите кто разбирается хорошо в этом.
Записан
kibsoft
Хакер
Offline
Сообщений: 625
Re: подключение класса, наследование
«
Ответ #1 :
Июня 11, 2010, 13:47 »
tex= new Texnology(this);
И чтобы фрейм нормально отображался в layout нужно засунуть.
Цитировать
ещё один экземпляр программы с фреймом этим
Это называется окном
Записан
http://kibsoft.ru
- Download the Qt Media Encoding Library here
The apps that were written using QtMEL:
http://srecorder.com
- Screen recording software
zenden
Гость
Re: подключение класса, наследование
«
Ответ #2 :
Июня 11, 2010, 16:29 »
Обрамляйте код тегами !!!
[сodе=cpp]ваш код [/cоde]
«
Последнее редактирование: Июня 11, 2010, 16:33 от zenden
»
Записан
Firefox
Гость
Re: подключение класса, наследование
«
Ответ #3 :
Июня 11, 2010, 20:28 »
спасибо попробую))
Записан
Firefox
Гость
Re: подключение класса, наследование
«
Ответ #4 :
Июня 16, 2010, 12:04 »
сделала как вы посоветовали, но не помогло, по прежнему 2 экземпляра окна. и ещё такой вопрос, чтобы обратиться к элементам на форме - тем что ранее созданы, из подключаемого класса, что сделать надо?
Записан
Nimbus
Гость
Re: подключение класса, наследование
«
Ответ #5 :
Июня 16, 2010, 15:19 »
Цитата: Firefox от Июня 16, 2010, 12:04
сделала как вы посоветовали, но не помогло, по прежнему 2 экземпляра окна. и ещё такой вопрос, чтобы обратиться к элементам на форме - тем что ранее созданы, из подключаемого класса, что сделать надо?
Обратиться к элементам экземпляра окна (как вы его называете) можно, разыменовав указатель на объект класса окна и обратиться к полям, объявленным со спецификатором доступа
public
.
Если вы использовали дизайнер для создания интерфейса, то обращайтесь уже по objectName.
Записан
spectre71
Гость
Re: подключение класса, наследование
«
Ответ #6 :
Июня 17, 2010, 10:35 »
Цитата: Nimbus от Июня 16, 2010, 15:19
Если вы использовали дизайнер для создания интерфейса, то обращайтесь уже по objectName.
Ерунда.
И вообще какое отношение данная тема имеет к "Программирование > С/C++".
Пренесите в "Вопросы новичков"
«
Последнее редактирование: Июня 17, 2010, 10:37 от Spectre
»
Записан
Firefox
Гость
Re: подключение класса, наследование
«
Ответ #7 :
Июня 17, 2010, 12:05 »
использовала дизайнер. в основном классе пишу например ui.textLabel->... в подключаемом такое обращение вызывает ошибку сразу.не поняла точно как сделать то, что вы советуете.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...