crossplatform.ru

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


  Ответ в Заполнить виджет окна...
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
silver47 Дата 2.5.2011, 5:56
  В данной конкретной ситуации деструктор создала сама среда разработки. В нем необходимо уничтожить те объекты, которые были созданы в этом классе, но для которых не установлен родитель. Ну, например, в классе создается указатель на файл, для работы с ним. При уничтожении класса хорошо бы закрыть этот файл и удалить указатель. Или в классе создаете QTextDocument для экспорта какого-либо содержимого в файл odt или PDF. Опять же его следует уничтожить, иначе вероятна утечка памяти. Приведу пример еще нагляднее:
Widget::Widget(QWidget *parent) : Qwidget(parent){ // конструктор Вашего виджета
QHBoxLayout *mainLay = new QHBoxLayout(this); // теперь для этого лайаута и для всех элементов, помещенных в него указан родитель
// все они будут автоматически уничтожены при уничтожении экземпляра этого класса
mainLay->addWidget(new Label("Some Text"));     // все в порядке, этот Label будет уничтожен при уничтожении экземпляра класса
memoryLeekLbl = new QLabel("this cause memory leek");  // а это уже утечка памяти.
memoryLeekLbl->show();    
// у этого объекта нет родителя и он не будет уничтожен при уничтожении экземпляра класса Widget
// Для небольших программ это не проблема, если эта программа содержит один виджет - экземпляр этого класса, то после закрытия виджета
// закроется и сама программа, а при закрытии программы этот объект будет уничтожен. В крупных же проектах, где динамически создаются
// и уничтожаются экземпляры разных классов и не по разу - это может вылиться в проблему
}
fortero Дата 2.5.2011, 0:42
  Спасибо большое, Вы по настоящему помогли, всё стало таким каким я и представлял себе! Я под редактировал класс который отвечал за таблицу, и всё просто супер!
Извини меня за глупые вопросы я только начинаю, много читаю но всё не усваивается сразу, а вот когда кто то разжуёт сразу всё понятно и наглядно, к примеру мой класс для таблиц, он заниматься будит разными таблицами и у всех будет разное число столбцов я уже решил с этим проблему но главное Вы всё показали наглядно и понятно!
Есть ещё вопрос: я заметил у вас присутствие в коде деструктора…
Что такое деструктор я имею представление, Шилдта читал, и Страуструпа… Суть в том что бы разрушать объект, это понятно, но в Qt в книжках и в приложениях которые даются в примерах я не замечал а у вас я вижу, объясните как им пользоваться тут он нужен? Для чего вы вписал у себя в коде? Мне эти детали очень важны у меня всегда много вопросов, так как - дело для меня это новое не освоенное! Как говорится в фильме)))
Большое спасибо за внимание и помощь!
silver47 Дата 1.5.2011, 20:16
  Ну чего Вы так прицепились к этому компоновщику?! Он свое дело сделал - растянул таблицу по своему размеру, а вот то что таблица не умеет изменять размеры своих столбцов под свой размер - это другое дело, нужно ее научить. Научить можно двумя способами
  1. Создать свою таблицу, унаследовавшись от сущестующей и добавив необходимый функционал
  2. Установить фильтр событий, отловить событие изменения размера таблицы и обработать его в другом методе


Как сделать первый вариант я уже писал, применительно к QTableView. Прикрепляю проект с реализацией второго варианта. В нем все та же таблица 5 на 4, в которой столбцы всегда делят размер таблицы в пропорции 10% 25% 25% 40%

UPD: Все тот же Макс Шлее страница 283
fortero Дата 1.5.2011, 18:26
  Добрый день!
Извините, что пропал… Конструктор суб окна?
second.h
#include <QtGui>
#include <QtSql>

#include "dbconnect.h"
#include "tablecl.h"

class SecondWin : public QMainWindow {
    Q_OBJECT
public:
    SecondWin();
    bool newWi(int rwtrig); //Новое окно второго класса
    //
    QString friendWin();
    QString currentFile(){ return curWin; }
    
private:
    QString strName(const QString &fullFN);
    QString curWin;
    //Область второго окна меню и др.
    DbConnect *db;
    TableCl *newtab;
    
    
    ///
};


Я согласен, что секретов нет, да их быть не может просто над кодом работаю я не один, и я не знаю как другие отреагируют…
А вы не могли показать примеры как в Layout упровлять таблицей, что бы Layout автоматом её растягивал???
Вопрос действительно решился с той задачей, так как мне больше 2 колонок не надо…
Но очень скоро понадобится строить таблицы где минимум 5 будет и хотелось решить проблему с автоматическим растягиванием.
Буду очень признателен, спасибо за внимание!
Litkevich Yuriy Дата 30.4.2011, 20:58
 
Цитата(fortero @ 29.4.2011, 21:47) *
У меня всё в коде
показывай код контсруктора субокна.

П.С.
до секретов ещё ой как далеко, так что выкладывай в форум.

П.П.С.
весь код приложения не интересен и будет лишь захламлять форум

Цитата(silver47 @ 30.4.2011, 7:46) *
Мне казалось этот вопрос решили еще тут
похоже на то
silver47 Дата 30.4.2011, 4:46
  Мне казалось этот вопрос решили еще тут
fortero Дата 29.4.2011, 18:47
 
Цитата(Litkevich Yuriy @ 29.4.2011, 16:54) *
fortero, как делал субокно? В коде, в дизайнере?


В коде...
У меня всё в коде, могу дать посмотреть, но только через электронку...
Litkevich Yuriy Дата 29.4.2011, 16:54
  fortero, как делал субокно? В коде, в дизайнере?
fortero Дата 29.4.2011, 16:31
 
Цитата(Litkevich Yuriy @ 29.4.2011, 10:33) *
Цитата(fortero @ 27.4.2011, 4:19) *
а как мне сделать, что бы таблица равномерно увеличивалась при увиличении окна, а то она статична в размере,
научиться пользоваться компоновщиками (QLayout's)

Но а Вы не подкажите?
Litkevich Yuriy Дата 29.4.2011, 10:33
 
Цитата(fortero @ 27.4.2011, 4:19) *
а как мне сделать, что бы таблица равномерно увеличивалась при увиличении окна, а то она статична в размере,
научиться пользоваться компоновщиками (QLayout's)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:07