Название: Qt-4.1.4 - QWidget и setSizePolicy () - ИМХО ГЛЮК!!! Отправлено: pacmanoid от Сентябрь 01, 2006, 20:06 Использую QT-4.1.4 под LINUX, точнее из пакета qt-x11-opensource-src-4.1.4.tar.gz .
Я непойму, это глюк или так и должно быть. Пробовал с разными виджетами. Вот пример с QSpinBox. Например имеется простой код: Код: ... но при компиляции получается: Код: g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.1.4/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.1.4/include/QtCore -I/usr/local/Trolltech/Qt-4.1.4/include/QtGui -I/usr/local/Trolltech/Qt-4.1.4/include -I. -I. -o window.o window.cpp По документации функция setSizePolicy() принадлежит классу QWidget и имеет спецификатор public: Тоесть получается что она должна вызываться без проблем где угодно у объектов порожденных от QWidget. Но вот выходит такая вот ошибка. Название: Qt-4.1.4 - QWidget и setSizePolicy () - ИМХО ГЛЮК!!! Отправлено: Steven_Orko от Сентябрь 01, 2006, 21:26 Насколько я понимаю текст ошибки, то он не имеет никакого отношения к setSizePolicy, вернее к ее видимости. А ошибка говорит о том, что контруктор QSizePolicy приватный, т.е. класс имеет скорее всего защиту от копирования.
Название: Qt-4.1.4 - QWidget и setSizePolicy () - ИМХО ГЛЮК!!! Отправлено: noosooth от Сентябрь 02, 2006, 00:10 Конечно же QWidget::setSizePolicy(...) здесь не виновата.
Просто у класса QWidget нет функции setSizePolicy(QSizePolicy::Policy) Есть вот такие: Код:
to pacmanoid: Вы наверное просто забыли ещё один параметр передать? Либо хотели передать в качестве параметра класс QSizePolicy, а передали enum QSizePolicy::Policy. А у компилятора то "оverload resolution" и он выбрал в данном случае ф-цию: void setSizePolicy(QSizePolicy policy). Т.е. ожидал на входе класс QSizePolicy. А у класса QSizePolicy к несчастью есть private конструктор: QSizePolicy(int i). Ваш enum привёлся к int'у и компилятор попытался неявно вызвать конструктор QSizePolicy(int i). Вот такой у нас "чудный" язык :). Название: Qt-4.1.4 - QWidget и setSizePolicy () - ИМХО ГЛЮК!!! Отправлено: pacmanoid от Сентябрь 02, 2006, 14:36 Вот в том то вся и соль, что вызаов:
Код: integerSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); компилируется без ошибок, а вызов: Код: integerSpinBox->setSizePolicy(QSizePolicy::Expanding); уже не компилмруется, компилятор выдает вышеуказанную ошибку. А по документации эти две вункции имеют специвикатор public: и в описании находятся по соседству. Название: Qt-4.1.4 - QWidget и setSizePolicy () - ИМХО ГЛЮК!!! Отправлено: noosooth от Сентябрь 02, 2006, 15:52 Мда...
Повторяю: Вы передаете в функцию не тот параметр, который ей нужен. Ей нужен класс QSizePolicy, а Вы передаете ей enum QSizePolicy::Policy. Разницу улавливаете? Название: Qt-4.1.4 - QWidget и setSizePolicy () - ИМХО ГЛЮК!!! Отправлено: pacmanoid от Сентябрь 02, 2006, 17:45 Цитата: "noosooth" Мда... Повторяю: Вы передаете в функцию не тот параметр, который ей нужен. Ей нужен класс QSizePolicy, а Вы передаете ей enum QSizePolicy::Policy. Разницу улавливаете? Виноват. Все, дошло до колхозника, звыняюсь. Вот до чего доводит автоматизм восприятия текстовой информации. Эдакая психопатогенная слепота. |