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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 3 4 [5] 6 7 ... 313
61  Qt / Вопросы новичков / Re: Как написать функцию Length(QList *)? : Август 18, 2023, 21:51
вызовется конструктор по умолчанию в обоих случаях
62  Qt / Вопросы новичков / Re: Как написать функцию Length(QList *)? : Август 18, 2023, 09:33
нет, указатель так не передашь. а зачем передавать массив как указатель? в случае с Qt контейнерами их можно передавать по значению
63  Qt / Qt Quick / Re: Позиционирование и размер текста при изменении размера обьекта : Август 16, 2023, 16:54
написал бы как решил в итоге Улыбающийся
64  Qt / 2D и 3D графика / Re: Перерисовка обьекта Shape и его цвета : Август 16, 2023, 16:52
ну как будто бы pelData имеет кривой needleColor, вот и всё, что можно сказать без кода
65  Qt / 2D и 3D графика / Re: Перерисовка обьекта Shape и его цвета : Август 16, 2023, 11:50
не совсем понятно в чем проблема. покажи как ты делаешь копию.
66  Qt / Общие вопросы / Re: Как работает qt_add_qml_module в Qt6 : Август 08, 2023, 19:02
исходники всех дополнительных смаке функций лежат в QTDIR/lib/cmake, можно просто почитать что там происходит внутри
67  Qt / Qt Quick / Re: Передача модели С++ в qml и доступ к пропертям : Август 03, 2023, 13:05
рантайм всё прокидывает за нас. к тому же, у нас тут декларативный язык, магия в нем вообще повсюду Улыбающийся
68  Qt / Общие вопросы / Re: cmake и конфигурация сборки и линковки через json : Август 03, 2023, 13:02
пресеты задают всякие cmake параметры, типа твоих кастомных переменных, флажков компиляции и т.д., чтоб не писать их вручную в терминале

если ты не добавишь папку проекта через add_subdirectory, то ее в солюшене вообще не будет. как сделать чтоб проект там был, но был unload или чтоб не собирался по умолчанию я не знаю, это надо курить доку cmake касательно студийно-специфических переменных/свойств (а то и вовсе вручную править сгенерированный файл солюшена/проекта)
69  Qt / Qt Quick / Re: Передача модели С++ в qml и доступ к пропертям : Август 02, 2023, 14:07
все роли надо объявлять у делегата как property (обычно их делают required) и обращаться к ним как к свойствам делегата, а не model. https://doc.qt.io/qt-6/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel-subclass (это же применимо и к моделям, созданным прямо в QML)
70  Qt / Qt Quick / Re: Передача модели С++ в qml и доступ к пропертям : Август 02, 2023, 10:42
в делегат добавь required property, которые доступны из модели

или это свойства именно самой модели, а не элемента модели?
71  Qt / Qt Quick / Re: Нарисовать стрелку внутри rectangle : Июль 25, 2023, 21:42
нагуглил или геометрически вывел? Улыбающийся так вот сходу неочевидно откуда взялась формула. UPD: а, понял, это ж матрица поворота (и вот мы опять пришли к QTransform Улыбающийся ), а offset — это по сути ненулевая у-координата у точек по обе стороны центра стрелки.

можно немного улучшить код:
Код
C++ (Qt)
QPointF calculatePoint(double radius, double angle, double offset)
{
   const auto angleRads = std::numbers::pi * angle / 180.0;
   const auto sinA = qSin(angleRads);
   const auto cosA = qCos(angleRads);
 
   QPointF pointF{m_MainCircleDiameter.value() / 2, m_MainCircleDiameter.value() / 2};
   pointF.rx() += radius * cosA - offset * sinA;
   pointF.ry() += radius * sinA + offset * cosA;
   return pointF;
}
72  Qt / Qt Quick / Re: Нарисовать стрелку внутри rectangle : Июль 23, 2023, 21:36
а, ну да, там можно получить любую точку на луче, главное правильный радиус передать
73  Qt / Qt Quick / Re: Нарисовать стрелку внутри rectangle : Июль 23, 2023, 19:47
Цитировать
угол на котором они должны быть в направлении нужного значения это половина отрезка между ними
угол не может равняться половине отрезка, это разные величины

как я понимаю, calculatePoint вычисляет точку на маленькой окружности. по идее тебе достаточно добавить эту точку к каждой точке стрелки, при условии, что стрелка задана в относительных координатах, где (0,0) — это правый край маленькой окружности.

также можно задать стрелку для 0 градусов, а потом просто применять к ней QTransform-поворот вместо своих вычислений:
Код
C++ (Qt)
QPolygonF arrowPointingRight = {{x1, y1}, ...};
auto rotatedArrow = QTransform::fromTranslate(centerX, centerY).rotate(angle).map(arrowPointingRight);
можно такой поворот и к каждой отдельной точке применить при необходимости

З.Ы. лучше передавать double по значению
74  Qt / Qt Quick / Re: Позиционирование и размер текста при изменении размера обьекта : Июль 23, 2023, 14:59
позицию наверное проще всего считать в зависимости от «четверти» окружности: например, для угла от 0 до 90 — это нижняя правая четверть (в Qt углы растут по часовой стрелке), там надписи надо выстраивать по их нижней правой границе.

как найти оптимальный размер шрифта: ну это уж тебе надо самому пробовать разные варианты, лучше вместе с дизайнером Улыбающийся самое банальное: взять два размера окна (например, стандартный и 2х) и определить для них нужный размер шрифта (не факт, что во втором случае будет 2х), на основании этой информации добавить в код формулу расчета размера шрифта.
75  Qt / Qt Quick / Re: Нарисовать стрелку внутри rectangle : Июль 23, 2023, 10:39
да, можно стрелку и через PathPolyline нарисовать (можно и через набор PathLine).
И такой вопрос, в вашем примере 2 раза PathMove но на них не завязаны сами PathLine. Как они законекчены друг с другом?
они как раз завязаны, рисование выполняется последовательно от «текущей точки». мы начинаем с границы окружности и рисуем рисочку, текущая точка становится концом рисочки. но оба куска стрелки мы хотим начать с границы окружности, поэтому возвращаемся в исходную точку 0,0.

вот пример. здесь мы определяем размер стрелки через относительные величины, а потом масштабируем ее до нужного размера через scale (можно и сразу задавать координаты с учетом размера, это не столь существенно). также тут есть небольшая хитрость: стрелка приклеена к маленькой окружности (для случая в 0 градусов), а дальше мы просто выполняем вращение этой окружности, чтоб установить стрелку в нужное положение. в качестве альтернативы можно окружность не вращать, а вращать эфемерный айтем-родитель для стрелки (он будет иметь anchors.fill: smallCircle). но если ты будешь в коде считать координаты заранее, то в этой хитрости нет необходимости.
Код
Rectangle {
id: smallCircle
readonly property real angle: 31
 
anchors.centerIn: parent
width: circle.radius / 3
height: width
 
radius: width / 2
border.color: "black"
 
rotation: angle
 
Shape {
id: arrow
readonly property real arrowLength: circle.radius - smallCircle.radius
readonly property real arrowWidth: 10
readonly property real arrowRelativeLength: 6
readonly property real arrowTipRelativeLength: 2
 
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.right
 
ShapePath {
fillColor: "black"
scale: Qt.size(arrow.arrowLength / arrow.arrowRelativeLength, arrow.arrowWidth)
 
PathPolyline {
readonly property point topLeft: Qt.point(0, 1)
path: [
topLeft,
Qt.point(arrow.arrowRelativeLength - arrow.arrowTipRelativeLength, 1),
Qt.point(arrow.arrowRelativeLength, 0),
Qt.point(arrow.arrowRelativeLength - arrow.arrowTipRelativeLength, -1),
Qt.point(0, -1),
topLeft,
]
}
}
}
}
просто добавить этот элемент после репитера.
Страниц: 1 ... 3 4 [5] 6 7 ... 313

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