crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
Алексей1153
  опции профиля:
сообщение 11.11.2010, 12:21
Сообщение #11


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(PVGDRK @ 11.11.2010, 14:03) *
Window::Window()
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.drawLine(QPointF(10,10),QPointF(90,90)); // Рисуем линию
}

зачем это в конструкторе ? Убирай оттуда это :) И размещай в paintEvent

Чтобы реагировать на изменение размера, переопредели виртуалку
void QWidget::resizeEvent ( QResizeEvent * event )

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 11.11.2010, 12:39
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


В paintEvent тоже размещала - все равно не выводится линия
может чего забыла где приписать, инклюд какой нибудь или еще чего нибудь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.11.2010, 12:51
Сообщение #13


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


и вот так не рисуется ?
void RenderArea::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawLine(QPoint(10,10),QPoint(90,90)); // Рисуем линию
}





а окно то вообще на экране отображено ? Может оно невидимо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 11.11.2010, 13:25
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да, окно есть , но на нем ничего не рисуется :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 11.11.2010, 13:28
Сообщение #15


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


я не вижу как у вас связаны RenderArea и Window?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 11.11.2010, 13:51
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


похоже они у меня не связаны :(
Если в файл window.h изменить так:
Раскрывающийся текст

#ifndef WINDOW_H
#define WINDOW_H

#include <QWidget>
#include <QPainter>

class RenderArea;
class QComboBox;
class Window : public QWidget
{
Q_OBJECT

public:
Window();

private:
QComboBox *fillRuleComboBox;
};
#endif


А файл window.с изменить так:
Раскрывающийся текст

#include "window.h"
#include <QtGui>
#include <math.h>
#include "renderarea.h"

Window::Window()
{
fillRuleComboBox = new QComboBox;
fillRuleComboBox->addItem(tr("Odd Even"), Qt::OddEvenFill);
fillRuleComboBox->addItem(tr("Winding"), Qt::WindingFill);

QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(fillRuleComboBox, 1, 1, 1, 3);
setLayout(mainLayout);
}


То выводится маленькое окошко с комбобоксом,,,,
Как это все связать? Я уже запуталась
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.11.2010, 14:11
Сообщение #17


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


PVGDRK, тебе надо объявить в классе Window
/*virtual*/ void paintEvent(QPaintEvent *);


а затем реализовать

void Window::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.drawLine(QPoint(10,10),QPoint(90,90)); // Рисуем линию
}


а насчёт комбы - ну это ты сама решай, надо тебе его или нет ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 11.11.2010, 15:13
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот спасибо то огромное!!! Нарисовалась линия :yahoo:
Уж простие, но мне бы как для самого круглого чайника, не могли бы пояснить с размером окна

void QWidget::resizeEvent ( QResizeEvent * event )
Куда это вписать ?

почему окно все равно выводится, если написано так:

файл window.h
Раскрывающийся текст

#ifndef WINDOW_H
#define WINDOW_H

#include <QWidget>
#include <QPainter>

class RenderArea;
class QWidget;

class Window : public QWidget
{
Q_OBJECT

public:
Window();

protected:
void paintEvent(QPaintEvent *);
};
#endif


файл window.c
Раскрывающийся текст

#include "window.h"
#include <QtGui>
#include <math.h>
#include "renderarea.h"

Window::Window()
{
}


файл renderarea.h

Раскрывающийся текст

#ifndef RENDERAREA_H
#define RENDERAREA_H
#include <QPainterPath>
#include <QWidget>

class RenderArea : public QWidget
{
Q_OBJECT

public:
RenderArea(const QPainterPath &path, QWidget *parent = 0);

private:
QPainterPath path;

};
#endif


файл renderarea.c
Раскрывающийся текст

#include <QtGui>
#include <QPainter>
#include "renderarea.h"
#include "window.h"

RenderArea::RenderArea(const QPainterPath &path, QWidget *parent)
: QWidget(parent), path(path)
{

}

void Window::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.drawLine(QPointF(10,10),QPointF(90,90));

}

Где тогда задаются размеры окна?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.11.2010, 20:27
Сообщение #19


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


не понимаю вопрос - размеры какого окна хочешь задавать ? Какова иерархия окон и их взаимное расположение ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 12.11.2010, 10:10
Сообщение #20


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


С вышеприведенным текстом у меня выводится одно окно почти на весь экран с нарисованной линией.... Поэтому я предполагаю, что нет у меня иерархии окон ... может и окна то нет? В смысле оно не описано как надо... Но я то его вижу... Ох, все- совсем запуталась
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 3.6.2025, 14:03