crossplatform.ru

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


  Ответ в преобразованный QWidget не отрисовывается на форме
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
efg Дата 16.5.2011, 11:33
  внезапно. всё заработало после того, как добавил на форму компоновщик, а в него - свой виджет :pardon:
тему можно закрыть
efg Дата 15.5.2011, 16:46
  ещё вопрос. решил проверить, что же я делаю не так, написав виджет, который рисуется в виде двух линий - диагоналей квадрата 50х50

myclass.h:
#ifndef MYCLASS_H
#define MYCLASS_H

#include <QtGui>

class myclass : public QWidget {
    Q_OBJECT
public:
    explicit myclass(QWidget *parent = 0);
    virtual ~myclass();
    void paintEvent(QPaintEvent *event);
    virtual QSize sizeHint() const;
    virtual QSize minimumSizeHint() const;
private:

};

#endif // MYCLASS_H


myclass.cpp:
#include "myclass.h"

myclass::myclass(QWidget *parent) {
    setWindowTitle("test");
    resize(50, 50);
    setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    repaint();
}

myclass::~myclass() {
}

void myclass::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.drawLine(0,0,50,50);
    painter.drawLine(0,50,50,0);
}

QSize myclass::sizeHint() const {
    return QSize(50,50);
}

QSize myclass::minimumSizeHint() const {
    return QSize(50,50);
}


main.cpp:
#include "myclass.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    myclass myobject;
    myobject.show();

    return a.exec();
}


реализация всего остального - стандартная при создании gui-проекта
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


и - опять та же фигня (на форме не рисуется, если показывать виджет - нормально). может, теперь вам понятнее станет. ткните уже носом в косячное место :smile2:

тьфу, какой ещё "ещё вопрос". пост начинал писать, хотел спросить кое-что другое, но потом сам разобрался, проснулся недавно, утренний тупняк, у кого не бывает :) совсем уже загоняюсь

чтоб пост не пропадал, напишу про найденный баг:
при комментировании кода /* */, он сворачивается в ide за ненадобностью. если же после этого бэкспэйсом довести курсор до следующей

строки, то creator намертво зависнет :/
вынь 7 x64

блин, да чтоб вас ;) редактировать свои сообщения нельзя, а если второе за первым отправить, оно присоединяется к первому
efg Дата 13.5.2011, 10:34
 
Цитата(Litkevich Yuriy @ 13.5.2011, 8:28) *
efg, Судя по скрину, тестовый вариант виджета работает правильно.


В дизайнере этот тестовый вариант не работает?

Если да, то покажи настройки "Promote to" в дизайнере, для данного виджета. Прям снимок экрана.

Litkevich Yuriy Дата 13.5.2011, 7:28
  efg, Судя по скрину, тестовый вариант виджета работает правильно.


В дизайнере этот тестовый вариант не работает?

Если да, то покажи настройки "Promote to" в дизайнере, для данного виджета. Прям снимок экрана.
efg Дата 12.5.2011, 19:56
 
Цитата(PAFOS @ 12.5.2011, 8:58) *
мб ты при создании виджета не указываешь родителя?

Т.е. ему надо передавать указатель на родительский виджет.

как при размещении виджета на форме в кьют-дизайнере указать родителя? и что им будет? centralWidget?
PAFOS Дата 12.5.2011, 7:58
  мб ты при создании виджета не указываешь родителя?

Т.е. ему надо передавать указатель на родительский виджет.
efg Дата 11.5.2011, 23:26
  если добавить виджет на форму, опять ничего не рисуется
втф
efg Дата 10.5.2011, 21:20
 
Цитата(Litkevich Yuriy @ 10.5.2011, 18:01) *
efg, попробуй просто линию конкретным цветом нарисовать.


Litkevich Yuriy Дата 10.5.2011, 17:01
  efg, попробуй просто линию конкретным цветом нарисовать.

П.С.
У меня нет возможности набивать твой код для теста, если дашь простейший компилируемый проэкт, то потестю.

П.П.С.
Вызывать обработчик рисования базового класса не нужно, если всё хорошо. Я говорил так сделать, только для теста.
PAFOS Дата 10.5.2011, 13:40
  Когда я говорил чтобы ты поставил вызов QWidget::paintEvent(ev) в начало функции, я предполагал, что ты раскомментируешь свой код рисования.

А в том случае, что на скрине, программа отрабатывает правильно.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 5.5.2024, 10:06