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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 [2] 3 4 ... 137
16  Qt / Общие вопросы / Re: UB или нет? : Июль 19, 2018, 21:09
Ты можешь спокойно снимать константность, никто тебя за это не накажет. Кроме другого разработчика, конечно. Улыбающийся. А есть еще mutable мемберы.

член d - не mutable. https://en.cppreference.com/w/cpp/language/const_cast говорит:

Цитировать
const_cast makes it possible to form a reference or pointer to non-const type that is actually referring to a const object or a reference or pointer to non-volatile type that is actually referring to a volatile object. Modifying a const object through a non-const access path and referring to a volatile object through a non-volatile glvalue results in undefined behavior.

Код
C++ (Qt)
struct type {
   int i;
 
   type(): i(3) {}
 
   void f(int v) const {
       // this->i = v;                 // compile error: this is a pointer to const
       const_cast<type*>(this)->i = v; // OK as long as the type object isn't const
   }
};
 
type t; // if this was const type t, then t.f(4) would be undefined behavior
t.f(4);
 
17  Qt / Общие вопросы / Re: UB или нет? : Июль 19, 2018, 20:55
Нет, это не UB.

Спасибо за ответ Веселый Почему?
18  Qt / Вопросы новичков / Re: QPushButton, QIcon : Июль 19, 2018, 20:48
попробую в старой теме спросить - в pyqt  возможно растянуть картинку на всю кнопку?
если да  - то как?

Только с помощью стилей https://doc.qt.io/archives/qt-4.8/stylesheet-examples.html#qpushbutton-and-images
19  Qt / Общие вопросы / UB или нет? : Июль 19, 2018, 20:41
Код QString:

Код
C++ (Qt)
const ushort *QString::utf16() const
{
   if (IS_RAW_DATA(d)) {
       // ensure '\0'-termination for ::fromRawData strings
       const_cast<QString*>(this)->reallocData(uint(d->size) + 1u);
   }
   return d->data();
}

См. https://code.woboq.org/qt5/qtbase/src/corelib/tools/qstring.cpp.html#_ZN7QString11reallocDataEjb

reallocData() модифицирует член класса d. А что если объект QString - константный? Модификация константного объекта или его членов с использованием const_cast<T*> - UB. Так я всегда думал... Или нет?
20  Qt / Вопросы новичков / Re: Как правильно освободить память в QHash? : Июль 18, 2018, 19:32
>Используйте std::unordered_map

Почему? Я не проверял, но думаю QHash+QSharedPointer подойдёт.
21  Компиляторы и платформы / Windows / Crashpad на Windows 7 и VS2015 : Июль 09, 2018, 15:22
Кто-нибудь пробовал? Инструкции вроде ясны, но как обычно ничего не работает. Во-первых, недавние июньские коммиты прекратили поддержку VS2015. Во-вторых, он ещё и SDK для Windows 10 требует, даже если сделать reset --hard на более ранние коммиты. Собственно, кто-то пробовал этого зверя на Win7+VS2015?
22  Qt / Вопросы новичков / Re: QFileDialog открывается 2 раза : Июль 09, 2018, 15:09
Цитировать
if (outputFile == NULL) {

Вас ист дас?
23  Qt / Вопросы новичков / Re: QFileDialog открывается 2 раза : Июль 09, 2018, 14:58
Не пойму из-за чего это может происходить.

Из-за того, что твой слот имеет стандартное имя и распознаётся метасистемой Qt. Поэтому Qt автоматически создаёт к нему подключение с помощью QMetaObject::connectSlotsByName() (см. сгенерированный ui_...cpp файл). Ты создаёшь второе подключение вручную. Как результат, слот вызывается два раза подряд.
24  Qt / Мультимедиа / Re: Как посчитать общий вес всех QImage в массиве? : Июль 03, 2018, 16:56
См. QImage::cacheKey()
25  Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double : Июнь 28, 2018, 10:56
В MinGW 5.3.0 на Windows и GCC 5.3.1 на Linux бага нет. И в MinGW и в GCC получается строго 1.00000.... безо всяких хвостов-сюрпризов  в мантиссе.
26  Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double : Июнь 27, 2018, 19:29
Авварон дизассемблирование пока не смотрел
27  Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double : Июнь 27, 2018, 19:27
Запости баг об хреновеньком QVector2D::dotProduct(), если ручками все нормально Улыбающийся

Исходники dotProduct() - это копия того что делаю руками: https://code.woboq.org/qt5/qtbase/src/gui/math3d/qvector2d.cpp.html#_ZN9QVector2D10dotProductERKS_S1_ . Проблема явно не в коде как в таковом. Проблема с конпилятором как мне кажется.
28  Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double : Июнь 27, 2018, 16:39
Igors суффикс f не помог. Я проверил - внутри QVector2D данных хранятся правильно и одинаково как в 32-бит, так и в 64-бит версии. Проблема появляется только при вызове функции dotProduct (см. код выше) в 32-бит версии. Когда считаем руками - всё нормально Улыбающийся
29  Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double : Июнь 27, 2018, 16:37
deMax Продолжаем мистику! Улыбающийся

Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QCoreApplication app(argc, argv);
 
   QTextStream ts(stdout, QIODevice::WriteOnly);
 
   QVector2D v1(8.10837e-09, -1);
   QVector2D v2(4.45843e-07, -1);
 
   // считаем руками
   const double d1 = v1.x() * v2.x() + v1.y() * v2.y();
   // считаем стандартно
   const double d2 = QVector2D::dotProduct(v1,v2);
 
   ts.setRealNumberNotation(QTextStream::FixedNotation);
   ts.setRealNumberPrecision(20);
   ts
           << v1.x() << " "
           << v1.y() << " "
           << v2.x() << " "
           << v2.y() << " " << endl
           << d1 << " " << d2 << endl;
   ts.flush();
 
   return 0;
}

Выхлоп разный!

Цитировать
1.00000000000000000000 1.00000000000000355271
30  Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double : Июнь 27, 2018, 16:28
В первом случае вы убиваете точность, real(double) -> float -> double

Во втором также. В Qt5 QVector2D принимает и возвращает float. Поэтому и во втором случае идёт преобразование входных double литералов во float, потом dotProduct() считает результат также используя значения float, и возвращает также float!
Страниц: 1 [2] 3 4 ... 137

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