crossplatform.ru

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


  Ответ в QGridLayout отжирает 200мб памяти
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
Andrewshkovskii Дата 10.4.2010, 22:12
  Оффтопик мы с тобой щас разведем!Это было простой рекогнайзер, алгоритм другой. А сейчас почти такая же, только алгоритм другой, любые символы.в общем другая лаба:)Ту программу я давно донаписал!
SABROG Дата 10.4.2010, 15:07
 
Цитата(Andrewshkovskii @ 9.4.2010, 12:42) *
Интересно где, если я её вчера начал писать?:))


:) да нет, давно ты её уже пишешь:



http://www.forum.crossplatform.ru/index.ph...c=3907&st=0
Andrewshkovskii Дата 9.4.2010, 13:59
  Ох моя память..подумал про множественную инициализацую в таком виде и сгрешил..простите:)
Спасибо!
BRE Дата 9.4.2010, 13:52
 
void MainWindow::setEtalonsButton()
{
    int k,l=0;
    ...
}

Что ожидается от этой конструкции?

Переменная k - не инициализированна. Может быть большое прибольшое число. ;)
Andrewshkovskii Дата 9.4.2010, 13:49
  etalons вектор Etalon, а Etalon Эт сабкласс от QPushbutton.
Спасибо, сейчас посмотрю именно код..
Ну у меня в QtCreator все нормально читается:)
DIMEDROLL Дата 9.4.2010, 13:38
 
etalons
переменная какой тип?
надеюсь виджеты там не по значению

я бы попробовал подебажить и глянуть чем addWidget(QWidget*) отличается от addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )
видимо первая это:
void QLayout::addWidget ( QWidget * w )

а вторая:
void QGridLayout::addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )

вот и смотрите чем их внутринности отличаются...
З.Ы переменные называть буквой l не ходится, ибо читается она как 1(единица) ;)
Andrewshkovskii Дата 9.4.2010, 11:42
  Интересно где, если я её вчера начал писать?:))
А какие исходники?Вся загвоздка в этом цикле идет, если сделать простое добавление (без указания номера строки и столбца) то все нормально.
Добавил код :
Раскрывающийся текст
#ifndef ETALON_H
#define ETALON_H

#include <QPushButton>
#include <QPixmap>
#include <QFile>
#include <QDataStream>
#include <QIcon>


class Etalon : public QPushButton
{
Q_OBJECT

private:
    QFile * etalonFile_;
    QPixmap * picture_;

public:
    explicit Etalon(QWidget *parent = 0);
    Etalon (QString name);
    QString getName() {return this->text();};
    QPixmap * picture() {return this->picture_;};
    void setPixmap(QPixmap  pixmap) {delete picture_; this->picture_ = new QPixmap(pixmap);};
    signed int state;// -1 - nothing, 0 - new, 1 - name edited, 2 - image edited, 3- name and image edited

signals:

public slots:
    void updateIcon();
};

#endif // ETALON_H


Раскрывающийся текст
#include "etalon.h"
#include <QDebug>

Etalon::Etalon(QWidget *parent) :
    QPushButton(parent)
{
     picture_ = new QPixmap(240,240);//empty pixmap
     picture_->fill();
}

Etalon::Etalon(QString name)
{
    this->state=-1;
    this->setText(name);
    picture_ = new QPixmap();
    if(picture_->load(".\\images\\"+this->text()+".PNG"))
           this->updateIcon();
}

void Etalon::updateIcon()
{
    this->setIcon(QIcon(*picture_));
}


Храняться эталоны в векторе. добовляются на интерфейс вот так вот :
void MainWindow::setEtalonsButton()
{
    int k,l=0;
    for(int i=0;i<etalons.size();++i)
    {
            ui->gridLayout->addWidget(etalons[i],k,l);
            if(l!=2)
                ++l;
            else
               {
                   l=0;
                   ++k;
                }
    }
}


SABROG Дата 9.4.2010, 8:42
  Где-то я уже видел эту программу...

Без исходников сложно сказать что-либо.
Andrewshkovskii Дата 9.4.2010, 2:28
  В цикле "хитро" размещаю сабклас от QPushButton :

    int k,l=0;
    for(int i=0;i<etalons.size();++i)
    {
            ui->gridLayout->addWidget(etalons[i],k,l);
            if(l!=2)
                ++l;
            else
                {
                    l=0;
                    ++k;
                }
    }

Ну там по 3 кнопки в строке.
И отрижает это дело почему-то 200мб оперативки.
А если просто через addWidget(* QWidget), то все нормально.
с чего может быть такое поведение?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 4:23