Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Qt: объясните что такое libxrand, как его подключить и как с ним работать  (Прочитано 1445 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Добрый день.

Объясните как подключить libxrand к qt проекту и как с ней работать. базовые понятия я имею в виду. гуглил. ничего не нашел, кроме как спецификации X11 на вики, где есть раздел про эту библиотеку. поясните пожалуйста как с ней работать.

Стоит задача разобраться в управлении настройками монитора в линуксе через эту библиотеки в гуевом приложении qt.

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
В .pro файле добавь

LIBS += -L/usr/local/lib -lxrand

Путь может быть другим.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
ок, спасибо.

если можно примеры минимальные работы с этой библиотекой? или ссылками в меня кидайте)

Оффлайн quiet_readonly

  • Участник
  • *
  • Сообщений: 133
    • Просмотр профиля
ок, спасибо.

если можно примеры минимальные работы с этой библиотекой? или ссылками в меня кидайте)
Когда гугл не даёт ссылки, можно поглядеть содержимое пакета libxrandr-dev (например, в синаптике через контекстное меню и пункт "свойства"). Так вот пакет содержит маны:
/usr/share/man/man3/XRRConfigCurrentConfiguration.3.gz
/usr/share/man/man3/XRRConfigCurrentRate.3.gz
/usr/share/man/man3/XRRConfigRates.3.gz
/usr/share/man/man3/XRRConfigRotations.3.gz
/usr/share/man/man3/XRRConfigSizes.3.gz
/usr/share/man/man3/XRRConfigTimes.3.gz
/usr/share/man/man3/XRRFreeScreenConfigInfo.3.gz
/usr/share/man/man3/XRRGetScreenInfo.3.gz
/usr/share/man/man3/XRRQueryExtension.3.gz
/usr/share/man/man3/XRRQueryVersion.3.gz
/usr/share/man/man3/XRRRootToScreen.3.gz
/usr/share/man/man3/XRRSelectInput.3.gz
/usr/share/man/man3/XRRSetScreenConfig.3.gz
/usr/share/man/man3/XRRSetScreenConfigAndRate.3.gz
/usr/share/man/man3/Xrandr.3.gz
В консоли - man XRRGetScreenInfo, например.

Примеры можно поискать на github, по слову xrandr или по именам функций.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
спасибо. буду изучать.

Пользователь решил продолжить мысль 28 Февраля 2013, 11:28:30:
установил бибиотеку. маны доступны. файлы *.a и *.so лежат на своих местах. как подключить к проекту эту библиотеку?

вот мой *.pro

#-------------------------------------------------
#
# Project created by QtCreator 2013-02-28T08:44:33
#
#-------------------------------------------------

QT       += core gui

INCLUDEPATH += /usr/include/X11/extensions
LIBS += L/usr/lib/i386-linux-gnu/ -lXrandr

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = XRTest
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui


после того, как в widget.cpp пишу #include <X11/extentions/Xrandr.h> вылазят следующие ошибки
In file included from /usr/include/qt4/QtCore/qstringlist.h:46:0,
                 from /usr/include/qt4/QtGui/qcolor.h:47,
                 from /usr/include/qt4/QtGui/qpalette.h:46,
                 from /usr/include/qt4/QtGui/qwidget.h:49,
                 from /usr/include/qt4/QtGui/QWidget:1,
                 from ../XRTest/widget.h:5,
                 from ../XRTest/main.cpp:2:
/usr/include/qt4/QtCore/qdatastream.h:50:2: error: #error qdatastream.h must be included before any header file that defines Status
/usr/include/qt4/QtCore/qdatastream.h:101:10: error: expected identifier before 'int'
/usr/include/qt4/QtCore/qdatastream.h:101:17: error: expected unqualified-id before '{' token
/usr/include/qt4/QtCore/qdatastream.h: In function 'QDataStream& operator>>(QDataStream&, QHash<Key, T>&)':
/usr/include/qt4/QtCore/qdatastream.h:351:18: error: expected unqualified-id before 'int'
/usr/include/qt4/QtCore/qdatastream.h:351:18: error: expected ';' before 'int'
/usr/include/qt4/QtCore/qdatastream.h:359:28: error: 'Ok' is not a member of 'QDataStream'
/usr/include/qt4/QtCore/qdatastream.h:368:24: error: 'Ok' is not a member of 'QDataStream'
/usr/include/qt4/QtCore/qdatastream.h:370:9: error: 'oldStatus' was not declared in this scope
/usr/include/qt4/QtCore/qdatastream.h:370:22: error: 'Ok' is not a member of 'QDataStream'
/usr/include/qt4/QtCore/qdatastream.h: In function 'QDataStream& operator>>(QDataStream&, QMap<aKey, aT>&)':
/usr/include/qt4/QtCore/qdatastream.h:395:18: error: expected unqualified-id before 'int'
/usr/include/qt4/QtCore/qdatastream.h:395:18: error: expected ';' before 'int'
/usr/include/qt4/QtCore/qdatastream.h:405:28: error: 'Ok' is not a member of 'QDataStream'
/usr/include/qt4/QtCore/qdatastream.h:414:24: error: 'Ok' is not a member of 'QDataStream'
/usr/include/qt4/QtCore/qdatastream.h:416:9: error: 'oldStatus' was not declared in this scope
/usr/include/qt4/QtCore/qdatastream.h:416:22: error: 'Ok' is not a member of 'QDataStream'
make: *** [main.o] Error 1
make: Leaving directory `/home/fluffy/Work/XRTest-build-desktop-Qt_4_8_3___PATH___________________'
09:26:20: Процесс «/usr/bin/make» завершился с кодом 2.
Возникла ошибка при сборке/установке проекта XRTest (цель: Desktop)
Во время выполнения этапа «Сборка»

что я делаю не так?
« Последнее редактирование: 28 Февраля 2013, 11:28:57 от FluffyMan »

Оффлайн quiet_readonly

  • Участник
  • *
  • Сообщений: 133
    • Просмотр профиля
error: #error qdatastream.h must be included before any header file that defines Status

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
как решить эту проблему? объявить #include <QWidet> раньше всех других инклудов?

Пользователь решил продолжить мысль 28 Февраля 2013, 12:18:38:
ну я и тупанул.

КОСТЫЛЬНОЕ РЕШЕНИЕ: #include <qdatastream.h> в *.h файле, а #include <X11/extentions/Xrandr.h> в *.cpp. Хотя это не выход из положения.
« Последнее редактирование: 28 Февраля 2013, 12:31:04 от FluffyMan »

 

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