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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 [3] 4 5 ... 142
31  Разное / Говорилка / Re: С Днём программиста! : Сентябрь 13, 2021, 16:26
Спасибо. Взаимно Улыбающийся
32  Qt / 2D и 3D графика / Re: как оформить выбор и нажатие 3d объекта? : Август 31, 2021, 10:05
Я подобную задачу решаю на плюсовом коде. Клик пользователя преобразую в линию, ищу пересечение этой линии с параллелепипедами, которые описывают объекты. Если таких больше 1, то ищу пересечения с треугольниками в объектах
33  Qt / Model-View (MV) / Re: Как рисовать комбобокс в таблице, чтобы он реагировал на события мыши : Август 20, 2021, 09:42
Я ещё накидал упрощённый пример, с которым можно было бы поразвлекаться https://gitlab.com/dsbabkov/PaintComboBoxOnView
34  Qt / Model-View (MV) / Как рисовать комбобокс в таблице, чтобы он реагировал на события мыши : Август 20, 2021, 09:32
Всем привет!
У меня установлена собствення фабрика редакторов. Сейчас имею такой метод рисования:
Код
C++ (Qt)
void CommonDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
   std::unique_ptr<QWidget> editor {QStyledItemDelegate::createEditor(nullptr, option, index)};
   if (auto *comboBox = dynamic_cast<QComboBox *>(editor.get())) {
       auto opt = option;
       initStyleOption(&opt, index);
 
       comboBox->setEnabled(index.flags() & Qt::ItemIsEditable);
 
       QStyleOptionComboBox cmbOpt;
       cmbOpt.initFrom(comboBox);
       cmbOpt.rect = opt.rect;
       cmbOpt.currentText = opt.text;
 
       const auto decoration = index.model()->data(index, Qt::DecorationRole);
       if (decoration.type() == QVariant::Icon) {
           cmbOpt.currentIcon = decoration.value<QIcon>();
           cmbOpt.iconSize = comboBox->iconSize();
       }
 
       QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &cmbOpt, painter);
       QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &cmbOpt, painter);
       return;
   }
   return QStyledItemDelegate::paint(painter, option, index);
}
 

Комбо в таблицу выводится, но вот он какой-то не живой. Обычно виджет как-то реагирует на наведение мыши, на покидание мыши виджета. Интересно, как можно было бы достичь такого же эффекта не сильно много внося изменений в текущий код

Пока что видится решение - наследоваться от AbstractView и связывать события мыши с делегатом + использовать какие-то флаги рисования. Но может есть что-то попроще?

Я ещё рассматривал вариант QAbstractItemView::setIndexWidget, но кажется, что он достаточно геморойный для меня, т.к. для отображения используется 3 класса моделей: фильтрующая->модель-массив однотипных моделей->модель элемент массива
35  Qt / Общие вопросы / Re: Ваше мнение о былом, сущем и будущем : Июль 23, 2021, 19:59
А я радуюсь от msys2. Там относительно свежие пакеты, mingw, qt, сейчас ещё и сборочки clang, вроде, подвозят - ещё предстоит поизучать мне этот вопрос. По идее можно настроить систему с использованием интернета и зазиповать. Либо, думаю, можно отдельно скачать инсталлятор и отдельно пакеты и оффлайн понаустанавливать их
36  Программирование / С/C++ / Re: c++ using : Июнь 23, 2021, 07:14
https://ideone.com/sBRvjx

Код
C++ (Qt)
class A {
public:
   A(int) {}
   A& operator=(int){return *this;}
};
 
class B: public A {
   using A::A;
   using A::operator=;
};
 
int main()
{
   B a(1), b(1);
   a = b;
   return 0;
}
 
37  Qt / Многопоточное программирование, процессы / thread sanitizer : Февраль 03, 2021, 23:39
Всем привет!
Крайне мало работал с многопоточностью и детектом ошибок
В моём qt приожении преимущественно используется omp на циклах for. Имеется 1 std::async, который работает пока парсится файл при открытии, а основной поток прогресс отображает
Скомпилил с thread sanitizer и получил неясный результат (аттач)
Не понимаю, в чём проблема, halp!
Место создания Т9: AboutDlg создаётся на стэке в MainWindow, который как родитель передаётся в списке инициализации конструктора.
Место создания Т19: функция, которая вызывается конструктором MainWindow, конкретная строчка:
Код:
connect(ui->openGeometryAct, &QAction::triggered, [this]{openGeometryFile();});
В openGeometryFile() вызывается std::async, но предупреждение возникает и тогда, когда программа ниразу эту функцию не дёргает

Как интерпретировать диагностику?
archlinux
clang version 11.0.1
extra/qt5-base 5.15.2-3
Код:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=thread -O0")
38  Qt / Вопросы новичков / Re: Непонятное падение программы : Январь 27, 2021, 08:14
Убедитесь ещё на всякий, что либы используются от одного компиля и что все они дебажные
39  Программирование / Алгоритмы / Re: Выбрать кадры : Январь 22, 2021, 08:37
Код
C++ (Qt)
     int len = stop - start + count;
     int result = (len * val) / count;
     return min(result * count, stop);
 
40  Qt / 2D и 3D графика / Цветная кривая (qwt) : Январь 16, 2021, 12:40
Всем привет!
Столкнулся с проблемой, что нужно вывести кривую (непрерывную), которая раскрашивается по её протяжённости
Кривая строится из набора примитивов: линий и дуг. Правила раскрашивания задаются как протяжённость(мм), цвет

Реализовал так: если примитив нужно красить в 2 цвета, то разбиваю примитив на 2 и каждому назначаю цвет
Во вложении пример работы

Проблема в том, что в точке 0 по высоте должен происходить цветовой переход, а из-за того что я использую толщину кисти 10 происходит наложение цвета над высотой 0...

Из идей имеется такая: в качестве кисти расчитывать и задавать градиент (линейный, конический)
Не знаю, взлетит ли идея. Может есть решение проще?
41  Программирование / С/C++ / Re: Адресная арифметика : Январь 15, 2021, 14:52
Не, ну можно ещё нечмошным бинарным поиском воспользоваться

А вообще, что спрошено, то и предложено
42  Программирование / Алгоритмы / Re: Выбрать кадры : Январь 14, 2021, 22:08
ну как напролом, что спрошено, то и предложено
43  Программирование / С/C++ / Re: Адресная арифметика : Январь 14, 2021, 22:02
Примерно так вижу
Код
C++ (Qt)
MaterialPtr Model::advancedMaterial(MaterialPtr base, int offset) {
   auto pos = std::find(m_Materials, m_Materials + m_MaterialCount, base);
   return pos + offset;
};
 
44  Программирование / С/C++ / Re: Адресная арифметика : Январь 14, 2021, 08:37
Звучит просто
1. найти индекс материала в массиве
2. вычислить новый индекс
3. найти материал по новому индексу
45  Программирование / С/C++ / Re: Адресная арифметика : Январь 14, 2021, 08:31
сделай std::vector<Material> и будет тебе счастье
Страниц: 1 2 [3] 4 5 ... 142

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