Название: Помогите идиоту... Отправлено: MegaHertz от Февраль 28, 2007, 11:15 Народ, знаю, что вопрос глупый, но все же... Хочу работать с изображениями. Создал Pixmap, нарисовал на нем что-то, что мне захотелось, а как теперь мне его вывести на экран?? Какие виджеты можно использовать и как вообще это сделать?))
Название: Re: Помогите идиоту... Отправлено: QCasper от Февраль 28, 2007, 11:38 Цитата: "MegaHertz" Народ, знаю, что вопрос глупый, но все же... Хочу работать с изображениями. Создал Pixmap, нарисовал на нем что-то, что мне захотелось, а как теперь мне его вывести на экран?? Какие виджеты можно использовать и как вообще это сделать?)) Код: void MyWidget::paintEvent(QPaintEvent*) { Название: Помогите идиоту... Отправлено: MegaHertz от Февраль 28, 2007, 11:44 Нет, это я понял.. а сам виджет как создать такой, чтобы я на нем мог рисовать?? Просто среди стандартных, вроде, я не нашел такого, а как мне его создать, сам виджет-то?
Название: Помогите идиоту... Отправлено: QCasper от Февраль 28, 2007, 11:47 Цитата: "MegaHertz" Нет, это я понял.. а сам виджет как создать такой, чтобы я на нем мог рисовать?? Просто среди стандартных, вроде, я не нашел такого, а как мне его создать, сам виджет-то? Код:
А вообще рисовать можно на чем угодно, что наследуется от QPaintDevice. Название: Помогите идиоту... Отправлено: MegaHertz от Февраль 28, 2007, 12:04 Спасибо большое, сейчас попробую! А если не сложно, можно привести еще список этих самых наследников, на которых рисовать можно?)) Хоть несколько))
Название: Помогите идиоту... Отправлено: QCasper от Февраль 28, 2007, 12:24 Цитата: "MegaHertz" Спасибо большое, сейчас попробую! А если не сложно, можно привести еще список этих самых наследников, на которых рисовать можно?)) Хоть несколько)) QCustomRasterPaintDevice, QGLFramebufferObject, QGLPixelBuffer, QImage, QPicture, QPixmap, QPrinter, and QWidget. И соответственно их наследники, например QWidget'овые: Q3ComboBox, Q3DataBrowser, Q3DataView, Q3DateTimeEdit, Q3DateTimeEditBase, Q3DockArea, Q3Header, Q3MainWindow, QAbstractButton, QAbstractSlider, QAbstractSpinBox, QAxWidget, QCalendarWidget, QComboBox, QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGLWidget, QGroupBox, QLineEdit, QMainWindow, QMenu, QMenuBar, QProgressBar, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QSvgWidget, QTabBar, QTabWidget, QToolBar, QWorkspace, QWSEmbedWidget, QX11EmbedContainer, and QX11EmbedWidget. А вообще это в асистанте все написано. И книжку еще читайте. Название: Помогите идиоту... Отправлено: MegaHertz от Февраль 28, 2007, 12:33 Спасибо огромное!)
Название: Re: Помогите идиоту... Отправлено: Sergey B. от Февраль 28, 2007, 13:36 Цитата: "MegaHertz" Народ, знаю, что вопрос глупый, но все же... Хочу работать с изображениями. Создал Pixmap, нарисовал на нем что-то, что мне захотелось, а как теперь мне его вывести на экран?? Какие виджеты можно использовать и как вообще это сделать?)) Самый простой QLabel Название: Re: Помогите идиоту... Отправлено: QCasper от Февраль 28, 2007, 14:16 Цитата: "Sergey B." Самый простой QLabel Как вариант. Код: QLabel *lbl = new QLabel(this); и вперед. Название: Помогите идиоту... Отправлено: Racheengel от Март 02, 2007, 00:51 а зачем вообще на лабеле тогда рисовать?
QLabel::setPixmap ( const QPixmap & ) Название: Помогите идиоту... Отправлено: Sergey B. от Март 03, 2007, 07:16 Цитата: "Racheengel" а зачем вообще на лабеле тогда рисовать? QLabel::setPixmap ( const QPixmap & ) Я это и имел ввиду :) Название: Помогите идиоту... Отправлено: MegaHertz от Март 03, 2007, 17:40 Всем большое спасибо, что подсказали, реально проще всего использовать Qlabel, только вот снова проблема =( Вот я сделал так:
int main(int argc, char *argv[]) { QApplication app( argc, argv ); QPixmap * NewPix; NewPix = new QPixmap(500,500); NewPix->fill(Qt::white); QLabel *label = new QLabel("Pix", 0); label->setPixmap(*NewPix); QPoint * pa=new QPoint(10,10); QPoint * pb=new QPoint(500,500); QPainter painter; painter.begin(NewPix); painter.drawLine(*pa,*pb); painter.end(); app.setMainWidget(label); label->show(); return app.exec(); } Все путем, создается Лейбл, крепится пиксмап, заполняется белым и... И ничего, линии нет... Просто пустой белый лист нужного размера.. В чем моя ошибка, что еще я сделал не так?? Название: Помогите идиоту... Отправлено: Sergey B. от Март 03, 2007, 18:36 QLabel::setPixmap ( const QPixmap & )
Название: Помогите идиоту... Отправлено: MegaHertz от Март 03, 2007, 18:41 Неа, он по ссылке не идет, объявлен-то пиксмап как * NewPix, при передаче по ссылке выдает:
error C2664: 'setPixmap' : cannot convert parameter 1 from 'class QPixmap ** ' to 'const class QPixmap &' Reason: cannot convert from 'class QPixmap ** ' to 'const class QPixmap' No constructor could take the source type, or constructor overload resolution was ambiguous К тому же, сам пиксмап прикрепился к лейблу и даже заполнился белым, просто линия не рисуется ведь... Название: Помогите идиоту... Отправлено: Sergey B. от Март 03, 2007, 19:02 Цитата: "MegaHertz" Неа, он по ссылке не идет, объявлен-то пиксмап как * NewPix, при передаче по ссылке выдает: error C2664: 'setPixmap' : cannot convert parameter 1 from 'class QPixmap ** ' to 'const class QPixmap &' Reason: cannot convert from 'class QPixmap ** ' to 'const class QPixmap' No constructor could take the source type, or constructor overload resolution was ambiguous К тому же, сам пиксмап прикрепился к лейблу и даже заполнился белым, просто линия не рисуется ведь... Сначала рисуешь на QPixmap, потом QLabel::setPixmap Название: Помогите идиоту... Отправлено: MegaHertz от Март 04, 2007, 12:22 Я точно идиот)))) Все вышло, всем спасибо)))
|