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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 709 710 [711] 712 713 ... 761
10651  Qt / Общие вопросы / Re: Вопрос о сравнении вхождений QStringList'ов : Февраль 16, 2010, 10:29
Код:
tokens.sort(); // обязательно сортируем
А кто Вам разрешил менять порядок слов в списке? Извольте повоэиться с указателями, посмотрим как вырастет объемчик.

кстати, забыли упомянуть о "независимости" от сторонних библиотек, соответствии стандарту программирования, и 100% переносимости кода.
Да, об этом мне лучше промолчать, потому что каждый раз когда я перетаскиваю сделанное c Mac на Вындоуз MSVC - я с ужасом думаю какую еще подлянку мне подсунет мелкософт и сколько дней (или недель) уйдет на то чтобы весь STL работал в Debug и Release

естественно! как писать идеальный код на С++ не зная STL и стандарта С++.
Никто и не говорил что не нужно знать стандарт. Вот только мне кажется что лучше не тот программист, который больше знает, а который умеет искать и находить решения.
10652  Qt / Общие вопросы / Re: Вопрос о сравнении вхождений QStringList'ов : Февраль 15, 2010, 16:51
А есть ли какие-то отличия в работе этих трех вариантов кода? Если да, то какие и где?)
Лучше спросить о достоинствах каждого варианта, тогда

1) Краткость/лаконичность

2) Демонстрация богатых возможностей библиотеки (и своей эрудиции)

3) Скорость
10653  Qt / Общие вопросы / Re: Как можно приостановить процесс ? : Февраль 15, 2010, 07:21
Завершать не надо, надо приостановить, чтобы потом можно было продолжить с прерванного места
Процесс имеет хотя бы 1 нитку (thread), как ее остановить? Или даже: как процесс может остановить одну из своих же ниток? Да никак, можно только послать событие, выставить флаг и.т.п. полагая что код, выполняющийся в нитке, это "поймет" и перейдет напр. в ожидание на семафоре. Но если нитка этого не делает - заставить ее нечем. То же и с процессом.
10654  Qt / Установка, сборка, отладка, тестирование / Re: Не получается побороть debug в Eclipse : Февраль 15, 2010, 07:05
типа никто не работает под дебагом в эклипсе?
Мне пришлось, для перевода 2 проектов на Линукс - а судя ао Вашим скриншотам там Вындоузю так что единственное что могу посоветовать - проверьте версию runtime java. Я огреб по полной (и с дебаггером тоже) пока не догадался подсунуть ему "хорошую жабу". Проблема описана в середине большого readme (типа known problems).
10655  Qt / Общие вопросы / Re: Реализация QList : Февраль 15, 2010, 06:45
Небольшое добавление к сказанному BRE

Вставка указателя в массив (с помощью memmove, как делает QList), вообще говоря, не есть "very fast insertion". Но это НАМНОГО быстрее вставки в QVector который memmove использовать не может, а должен вызывать конструктор копирования для всех последующих элементов начиная со вставляемого. Эта деталь часто бывает важной.
10656  Qt / Общие вопросы / Re: Вопрос о сравнении вхождений QStringList'ов : Февраль 15, 2010, 06:07
На контейнерах можно так
Код:
void RemoveStopsFromLst( QStringList & lst, const QStringList & stopLst )
{
// QSet для быстрого поиска
  QSet <QString> stop = stopLst.toSet();

// выходной лист чтобы не связываться с мутными удалениями из контейнера
  QStringList dst;

// отбираем
  for (int i = 0; i < lst.size(); ++i)
   if (!stop.contains(lst[ i ])
    dst.push_back(lst[ i ]);

// переписываем
  lst = dst;
}
10657  Qt / Model-View (MV) / Re: [Решено] View, похожий на список виджетов в Qt Designer : Февраль 15, 2010, 05:42
У меня такое было, вот минимальный проект. Мой файл только TestBox.cpp - остальное передрал из исходников дизайнера.
10658  Qt / Общие вопросы / Re: Главный поток умирает по непонятной причине. : Февраль 15, 2010, 04:50
реализация QEventLoop считаю вообще здесь ни к чему.
Да вот как раз "к чему"  Улыбающийся Слот/сигнал между нитками выполняется только через eventLoop. И QDirectConnection тоже. Примерно таким образом:

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

Так что все eventLoop должны быть запущены
10659  Программирование / С/C++ / Re: static переменные в inline методах : Февраль 15, 2010, 04:34
    inline static int idxMyProperty() { static int i = s_MetaTable.propByName("MyProperty"); return i; }
Может не очень удачный пример - static здесь никак не роялит. Если уж проверять, то:
Код:
inline static int idxMyProperty() 
{
  static int i = -1;    // начальное (недопустимое) значение
  if (i < 0)
    i = s_MetaTable.propByName("MyProperty");
  return i;
}
По идее должны иметь один i на все вызовы (и внешние тоже), inline есть личное дело компилятора, ф-циональность та же. Да и вообще неизвестно будет ли он делать это inline'ом  Улыбающийся
10660  Qt / Model-View (MV) / Re: Помогите организовать мигание иконки внутри делегата : Февраль 09, 2010, 20:45
Пацаны, мне кажется "слишком много теоретизируем"  Улыбающийся Более практично склепать вариант (их уже предложено не один) а потом "по жизни" смотреть где и что жмет, что плохо. Если этот класс постоянно/навязчиво требует внимания - надо перепланировать (ничего смертельного здесь нет). А если делает все что надо - так нечего время терять, др. работы полно
10661  Qt / Model-View (MV) / Re: Помогите организовать мигание иконки внутри делегата : Февраль 09, 2010, 17:43
Потому что представление каждую секунду принудительно перерисовывается. Этот способ я уже описывал.
В этом варианте мигающие элементы придется хранить и во view(очень плохо). Или по сигналу таймера вызывать repaint().
Как же Вы собираетесь организовать мигание без принудительной перерисовки с интервалом мигания ? Улыбающийся
И зачем хранить "и во view(очень плохо)"? Чем так уж плохо хранить в модели? Ладно, почему-то не хотите, так есть масса разумных вариантов, напр.

- мне здесь нравится множественное наследование
Код:
class MyDataModel : public QAbstractItemModel, public Blinker {
И если надо через dynamic_cast узнаем, может ли таблица мигать.

- также сделать Blinker отдельным классом и модель имеет указатель на него (членство вместо наследования)

- ладно, если уж хочется "общности/универсальности" - делаем вызов какого-то virtual'a в методе модели data()   
и.т.д.  и.т.п.

А вообще "проблема мигания" на мой взгляд не заслуживает обсуждения, сигнал таймера можно получить где угодно. Реально-то обсуждается "как покрасить ячейку" - и здесь ходов раз-два и обчелся. Перекрыть paint (полностью) конечно можно, но это "brute force". Так что ото приспосабливайте модель - и дело с концом.
10662  Qt / Model-View (MV) / Re: Помогите организовать мигание иконки внутри делегата : Февраль 09, 2010, 01:11
Код
C++ (Qt)
void CBtn_Delegate::paint( QPainter * painter, const QStyleOptionViewItem &option,
 const QModelIndex &index ) const
{
QWidget * w = dynamic_cast<QWidget *>( painter->device() );
if ( w )
{
QStylePainter p( w );
QStyleOptionButton opt;
opt.icon = QIcon( m_sIconPath );
 
... Все это легко делается ...
[/quote]Не вызывает сомнений что Вы владеете Qt, и для Вас это действительно легко. Но чего это надо перекрывать paint (т.е. брать на себя рисование) только для того чтобы изменить background? Чем плохо просто дополнить модель? У модели все на руках, все данные она знает, ну и пусть занимается также и цветом фона - зачем это совать в делегат который так себе "прослойка интеллигенция"?  Улыбающийся
10663  Программирование / С/C++ / Re: Multiply character constant : Февраль 08, 2010, 16:58
В первом варианте неудобно писать много кавычек/запятых. Со вторым к сожалению я не смогу написать так
Код:
switch (ID) {
  case TAG("TAG1"):
    ...
    break;
}
Но все равно, спасибо за поддержку  Улыбающийся
10664  Qt / Model-View (MV) / Re: Помогите организовать мигание иконки внутри делегата : Февраль 08, 2010, 15:35
Что значит выбранная ячейка? Откуда вью знает, какие ячейки должны мигать?
Что значит передать ячейке? Ячейка - это QModelIndex.
Data model всегда есть. Нарастите этот класс чтобы он умел давать разные цвета ячейкам, напр.

Код:
class MyDataModel : public QAbstractItemModel {
....
virtual void data( ..);  // добавить выдачу для Qt::BackgroundRole
...

void NextBlink( void ) { mBlinkState = (mBlinkState + 1) % 2; }

QVector <QModelIndex> mBlinkCell; // массив мигающих ячеек
int mBlinkState:                          // напр. 0 = синий, 1 = красный и.т.п.
};
По таймеру таблица говорит модели NextBlink и вызывает перерисовку нужных ячеек.
Правда, судя по исходникам, background (возвращаемый data) будет игнорироваться для выделенных ячеек если showDecorationSelected = true в стиле. Но оно public, так что можно напр. перекрыть paint для делегата. Короче, раскрасить ячейку можно  Улыбающийся
10665  Программирование / С/C++ / Multiply character constant : Февраль 07, 2010, 22:57
Добрый день

Столкнулся с небольшой но противной проблемкой. Имею массу таких мест
Код:
unsigned long theID = 'TAG1';

Все нормально, буквы переводятся в байты, все работает. Но вот компиляторы сыпят warning'и. Мол, нехорошо так делать и все такое. Оно конечно не смертельно, но неприятно, можно и существенный warning просмотреть в куче. Могу отключить через pragma. Но приходится шпилить на 3 компиляторах, одному отключаю - другие не понимают и наоборот. Делать эту конструкцию в hex (типа 0x45464748) - ну так я не пойму где какой ID. Как бы мне это порешать?

Спасибо

Страниц: 1 ... 709 710 [711] 712 713 ... 761

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