Russian Qt Forum
Апрель 29, 2024, 14:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 718 719 [720] 721 722 ... 761
10786  Qt / Общие вопросы / Re: Трудоемкие задачи (прервать или продолжить). Как прервать? : Декабрь 14, 2009, 00:16
Как можно оптимизировать Непонимающий
Код
C++ (Qt)
inline bool ItemOk( QTableWidgetItem * item )
{
if (!item) return false;
if (item->text().isEmpty()) return false;
return  item->data(Qt::DisplayRole).toString().indexOf(";") == -1;
}
//////////////////////////////////////////основная часть кода  принадлежит bool Spreadsheet::sort_data_with_GUI(const QList<QTableWidgetSelectionRange>& range)//////////////////////////////
QString error;
for(int it = 0; it < range.size(); it++) {
int begR = range[it].topRow();
       int endR = range[it].bottomRow();
for (int i = begR; i <= endR; i++) {
int begC = range[it].leftColumn();
int endC = range[it].rightColumn();
for (int j = begC; j <= endC; j++) {
if (!ItemOk(item(i, j))
error += QString("item at column %1, row %2 is invalid\n").arg(get_header_label(j)).arg(i); }
}
}
}
 
10787  Qt / Пользовательский интерфейс (GUI) / Re: Как позволить пользователю менять размер виджета? : Декабрь 13, 2009, 22:01
Просто дело в том, что виджет не должен быть доком (окном). А именно должен перемещаться по форме.
P.S. Копаю mouseEvent...
Не выгоднее ли изменить/продумать задачу? Например поставить в toolbar 4 маленьких кнопки/стрелки. Пользователь нажимает на одну из них - виджет перемещается влево-вправо-вверх-вниз (в зависимости от стрелки). Перекрывать QMouseEvent может быть хлопотно да и как дать пользователю понять что он может двигать QPlainText?
10788  Qt / Пользовательский интерфейс (GUI) / Re: Получаю не правильный размер widget'a и маленький вопрос о include : Декабрь 13, 2009, 21:45
А откуда adjustSize узнает что ты будешь вызывать именно show(), а не showFullScreen() или showMaximized()?
А мне не нужно "на все случаи" - пусть сделает для размеров установленных setSize. А когда у меня получившиеся размеры будут на руках я задам кому надо setMinimumSize/setMaximumSize а остальное пусть лайауты занимаются. Так ведь нет такой возможности  Плачущий
10789  Qt / Базы данных / Re: Для таблицы типа exel, spreadsheet. Помогите новичку. : Декабрь 13, 2009, 21:08
big text ->LargeTextView не компилится (проблема с линкованием)
Нужна библиотека QtDesigner
10790  Qt / Пользовательский интерфейс (GUI) / Re: Получаю не правильный размер widget'a и маленький вопрос о include : Декабрь 13, 2009, 21:07
А для чего нужен этот размер, если он тут-же измениться компоновщиком?
То уже я возьму на себя. Было бы замечательно если перед вызовом mainWindow->show() я мог бы вызвать что-то типа mainWindow->adjustSize() и получить все размеры как они будут на экране
10791  Qt / Пользовательский интерфейс (GUI) / Re: Получаю не правильный размер widget'a и маленький вопрос о include : Декабрь 13, 2009, 20:57
Как я и писал в конце метода вызывать qApp->processEvents() и получать после него или ставить в очередь вызов слота (Qt::QueuedConnection). Естественно, что размеры виджета могут тут же поменяться на другие после того как они уже были получены, просто нужно дополнять документацию, чтобы народ не удивлялся.
processEvents и экран обновит и много чего может еще сделать что к размерам не имеет отношения. Коряво, хотя согласен - лучшего не видно (в текущей версии)
10792  Qt / Базы данных / Re: Для таблицы типа exel, spreadsheet. Помогите новичку. : Декабрь 13, 2009, 20:47
Igors, ты ему дай ссылку на свой текстовый редактор для огромных файлов, пусть по изучает.
Можна пример текстового редактора??
МожнО
http://www.prog.org.ru/topic_11267_0.html
Ну то правда не редактор а вьюер и не на всех платформах он работает. Исходники смотреть можно но необязательно, просто почитайте тему и поймите что это совсем НЕ просто и незачем лезть в проблемы больших данных "просто так".
10793  Qt / Пользовательский интерфейс (GUI) / Re: Получаю не правильный размер widget'a и маленький вопрос о include : Декабрь 13, 2009, 20:26
Маленькое уточнение. Виртуальные методы в конструкторе вызывать можно, но не как виртуальные, поскольку в C++ конструкторы не виртуальны, на мой взгляд один из самых больших недостатков C++, - постоянно приходится делать init методы. Грустный
Улыбающийся Конструктор не может быть виртуальным поскольку именно его вызов прописывает VMT. А также лучше сказать: при конструировании базового класса будут вызываться его виртуальные методы (а не виртуальные методы порожденного класса).

Короче, не вижу разницы когда можно вычислять размеры, в конструкторе(в нужном с точки зрения программера месте) или после.
По-моему нужен метод виджета который бы обеспечивал "все размеры посчитаны, больше меняться не будут" (чтобы не приходилось делать это коряво через таймер). Может такой и есть но я его не нашел. Пробовал resize, setGeometry (для главного окна конечно) - не бычит, размеров child виджетов я не имею Плачущий  

Edit:
А как насчет adjustSize вызываемого в конструкторе? И получения размеров после него, как правило корректных.
А как "не правило"? Улыбающийся Я пробовал и иногда adjustSize работает, иногда нет. Как я понял зависит от флагов (Fixed, Expanded) - тоже не дело
10794  Qt / Пользовательский интерфейс (GUI) / Re: Получаю не правильный размер widget'a и маленький вопрос о include : Декабрь 13, 2009, 19:10
>>Да - сконсруирован уже в начале конструктора.
В начале конструктора сконструирован только базовый класс, то что память выделилась, ещё ни о чём не говорить, там кроме мусора ещё ничего нет
Не только члены и базовые классы - сам экземпляр инициализирован, указатель на VMT прописан, виртуальные методы в конструкторе вызывать можно.

Размеров в конструкторе не получить - это правильно поскольку размеры зависят от (многих) парентов и лайаутов. Но плохо что их вообще нельзя получить до show и часто приходится заниматься неприятными вычислениями длин/ширин или полагаться на мудрость лайаутов.
10795  Qt / Базы данных / Re: Для таблицы типа exel, spreadsheet. Помогите новичку. : Декабрь 13, 2009, 18:49
Примитивная таблица из QTableWidget готова, теперь можете ответить на вопрос про модель? Я просто уже курсач делаю месяц и хочу сделать его продуманным.
Работа с большими данными предполагает свап на диск, организацию подкачки страницами и.т.п. Это непросто даже для данных фиксированной длины. Для данных как QString (т.е. произвольного размера) трудности многократно возрастают. Короче это совсем не "маленькое дополнение/фича" к уже имеющейся таблице, а новая работа которая превышает выполненную во много раз.

Как правило, если данные велики, намного проще и лучше использовать БД чем управлять такими данными самому. Но не везде это подходит (напр для тех же excel таблиц БД может быть недостаточно гибкой). 

Я бы посоветовал думать реально и в рамках реальной задачи а не "растекаться мыслью по древу". Обсуждать таблицу 5Кх5К имеет смысл только если она реально есть (т.е. есть заказчик которому такая вещь нужна и который готов платить за нее). Иначе все мгновенно превращается в беспредметные фантазии (что я и вижу в запущенных Вами темах  Улыбающийся)
10796  Qt / Базы данных / Re: Для таблицы типа exel, spreadsheet. Помогите новичку. : Декабрь 13, 2009, 18:09
Как решить проблему с большим потребленией памяти для QAbstractTableModel (таблица 5000*5000- забита строками QString)
Всегда есть ЗАДАЧА и она определяет что нужно а что нет. Если Вы делаете "просто таблицу" - это, скажем, тема лабораторной работы и сделать это можно за несколько дней или быстрее. А если Вы делаете "таблицу которая работает с большими данными" (1-2 Gb и более) - то это уже совсем др. задача которая может быть темой курсового или даже дипломного проекта - потому что работы в десятки раз больше.

Поэтому не начинайте обсуждать серьезные вещи "просто так", из баловства. Сделайте сначала "просто таблицу" - до работы с большими данными Вам еще пахать и пахать  Улыбающийся
10797  Qt / Общие вопросы / Re: Трудоемкие задачи (прервать или продолжить). Как прервать? : Декабрь 13, 2009, 17:43
Пока я использую класс QTableWidget и метода insertRows я не видел
Значит плохо смотрели. У любой таблицы есть модель у которой есть метод insertRows.
10798  Qt / Общие вопросы / Re: Трудоемкие задачи (прервать или продолжить). Как прервать? : Декабрь 12, 2009, 19:57
Код
C++ (Qt)
void Spreadsheet::setRowCount(int count_,QProgressDialog &dialog) //мое работает
{
dialog.setLabelText(tr("set Row"));
dialog.setRange(0,0);
dialog.setValue(0);
dialog.setMinimumDuration(1);
QTableWidget::setRowCount(count_);
RowCount=count_;
 
}
При установке большого числа строк возникает зависание приложения на 3 сек. Как в эти 3 сек выводить QProgressDialog со свойствами: setRange(0,0), setValue(0)? Заранее спасибо
Число шагов известно, значит надо использовать setRange(0, count_).
Метод setRowCount позовет метод модели insertRows, вот там и обновляйте QProgressDialog
10799  Qt / 2D и 3D графика / Re: Рисование математической формулы : Декабрь 12, 2009, 15:18
Обычно всё проще  Улыбающийся Можно воспользоваться html для этого дела.. Да, это конечно не LaTeX, но если формулы достаточно плюшевые, то вполне можно юзать
Не знал что так можно, а мне это тоже может пригодиться. Спасибо за инфу Улыбающийся
10800  Qt / 2D и 3D графика / Re: Рисование математической формулы : Декабрь 12, 2009, 14:42
Писал синтаксический калькулятор, написал, теперь нужно чтобы введённая формула выводилась в нормальном графическом виде.
Т.е. ввожу sqrt(x) а прога рисует знак коря и под ним x.
Програмлю на qt, но с графикой ни когда не работал.
Пожалуйста, подскажите в какую сторону рыть. Или может кто подскажет где найти такие исходники.
Обычно это решается шрифтом в котором есть знак корня, знак числа пи и.т.п. (т.е Вам не нужно рисовать знаки графикой)
Страниц: 1 ... 718 719 [720] 721 722 ... 761

Страница сгенерирована за 0.109 секунд. Запросов: 23.