31 (21.07.2010 14:56:52 отредактировано LappoSV)

Re: Разработка на Qt (в т.ч. PySide)

Truf пишет:
LappoSV пишет:

1. Господа а не подскажет кто как из соей программы вызвать окно (лучше на весь экран со стрелкой возврата).

Это вот: http://doc.qt.nokia.com/qt-maemo-4.6/ma … ndows.html

Спасибо. Это уже хорошо... Но вот со скролингом - 0. Ни у кого нет опыта ??

Поделиться

32

Re: Разработка на Qt (в т.ч. PySide)

LappoSV пишет:

Спасибо. Это уже хорошо... Но вот со скролингом - 0. Ни у кого нет опыта ??

QAbstractKineticScroller ?

Сайт Truf

Поделиться

33 (21.07.2010 16:54:38 отредактировано Avis)

Re: Разработка на Qt (в т.ч. PySide)

LappoSV пишет:

Спасибо. Это уже хорошо... Но вот со скролингом - 0. Ни у кого нет опыта ??

Я делал так:
в заголовочном файле объявлен (хотя, он там и не нужен - можно прям в теле функции объявить...)

QAbstractKineticScroller *scroller1;

в теле класса (textTracking - текстовое поле на форме)

    scroller1 = ui->textTracking->property("kineticScroller").value<QAbstractKineticScroller *>();
    if (!scroller1)
         qFatal("Scroller only works with QMaemo5Style as the default style for all QAbstractScrollAreas");
    scroller1->setMode(QAbstractKineticScroller::AutoMode);
    scroller1->setEnabled(true);

Самое интересное - долго не мог понять почему не работало. Оказалось, что без последней строчки (setEnabled) не "включалось" smile

34

Re: Разработка на Qt (в т.ч. PySide)

Кроме
scroller1->setMode(QAbstractKineticScroller::AutoMode);
у меня всё так же.. Но и это не спасло гиганта мысли....
Видимо что-то не так на уровне вызова окна содержащего этот QTextEdit

Поделиться

35

Re: Разработка на Qt (в т.ч. PySide)

LappoSV пишет:

Видимо что-то не так на уровне вызова окна содержащего этот QTextEdit

А может быть скроллинг не работает по той простой причине, что текстовое поле пустое?

Поделиться

36

Re: Разработка на Qt (в т.ч. PySide)

LappoSV пишет:

Нет. Поле далеко не пустое...
Туда при открытии окна заливается текстовый файл.. И в эмуляторе появляется полоса прокрутки.

Хм, ну вот минималистичный проект с работающим скроллингом - может чем поможет smile

37 (22.07.2010 13:00:09 отредактировано LappoSV)

Re: Разработка на Qt (в т.ч. PySide)

Натолкнуло меня на решение вот это:

http://wiki.forum.nokia.com/index.php/S … ScrollArea

А решилось, на самом деле, всё вот так:

+ открыть спойлер

wid.h
class WidEdit : public QWidget
{
    Q_OBJECT
public:
    WidEdit(QWidget *parent=0);
private:
    QTextEdit * list;
    QHBoxLayout * lay;
    QScrollArea * scroll;
    QAbstractKineticScroller *scroller1;
};


wid.cpp

WidEdit::WidEdit(QWidget *parent)
    : QWidget(parent)
{
    list=new QTextEdit();
    lay=new QHBoxLayout();
    scroll=new QScrollArea();

    scroll->setWidget(list);
    scroll->setAlignment(Qt::AlignLeft);
    scroll->setWidgetResizable(true);
    scroll->setBackgroundRole(QPalette::Dark);// set background of scroll Area

    lay->addWidget(scroll);

    scroller1 = list->property("kineticScroller").value<QAbstractKineticScroller *>();
        if (!scroller1)
             qFatal("Scroller only works with QMaemo5Style as the default style for all QAbstractScrollAreas");
    scroller1->setMode(QAbstractKineticScroller::AutoMode);
    scroller1->setEnabled(true);

    setLayout(lay);//setting layout
    showMaximized();
}

Поделиться

38

Re: Разработка на Qt (в т.ч. PySide)

SR пишет:

И еще не знаю баг ли это или нет, но при моделировании формы диалогового окна для hildon обычно не нужны кнопки Ok и Cancel. Есть сигналы accepted и rejected которые обычно генерируются этими кнопками и их достаточно просто связать с нужным методом. А вот какой сигнал получается при закрытии диалогового окна в Maemo при нажатии на неактивную область я пока не нашел. Приходится писать обработчик для closeEvent.

В PyQt (или PySide) это решалось добавлением кнопки с RejectRole в диалоговой окно, и ее скрытием (метод hide())...после этого проверяешь не нажата ли эта кнопка - если нажата, значит нажали за пределы диалогового окошка(собственно говоря, отмена действий)

Поделиться

39

Re: Разработка на Qt (в т.ч. PySide)

Есть вопрос, может быть кто подскажет. В Маемо 5, чтобы не плодить окна в рамках одного приложения, в Qt был специальный атрибут для окна WA_Maemo5StackedWindow. В результате получался стек окон.
Вопрос: есть ли подобная штука для Harmattan ???
На старый атрибут, оно и понятно, получаю исключение:

Exception setAttribute(): type object 'PySide.QtCore.Qt' has no attribute 'WA_Maemo5StackedWindow'

Буду очень благодарен за помощь  ;-)

Сайт stolix

Поделиться

40

Re: Разработка на Qt (в т.ч. PySide)

stolix, спроси Trufа. Он рассказывал, что делал.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

41

Re: Разработка на Qt (в т.ч. PySide)

stolix пишет:

Вопрос: есть ли подобная штука для Harmattan ???

Система окон для Harmattan подразумевает чуть ли не принудительное (очень рекомендованное) использование стека.
Т.к. речь идет о QML (а построение интерфейса для MeeGo рекомендуется делать именно на QML), то придется здесь говорить о QML-ных командах.
Главное окно создается командой PageStackWindow
Каждое дочернее "окно" представляет из себя элемент Page
Есть pageStack куда добавляются или откуда удаляются страницы - соответственно, совершается переход между ними.
Т.е. pageStack.push(newPage) помещает newPage на вершину стека и отображает ее.
Извлечение текущей страницы и возврат к предыдущей pageStack.pop()
За порядком следования страниц следит сама система (т.е. классический такой стек).
Собственно, как-то так.
p.s. Да, никаких атрибутов, похожих на WA_Maemo5StackedWindow в MeeGo нет, т.к. стандартные QWidget'ы там поддерживаются лишь условно, для совместимости (для них, к примеру, нет родного системного стиля - т.е. выглядят они по дефолту очень убого).

42

Re: Разработка на Qt (в т.ч. PySide)

Avis, спасибо. Облазив developer.nokia  я уже понял, что это так sad Т.е. необходим обычный QStackedWidget.
Запускал приложение на стандартных QWidget-ах, разницы не заметил между QML элементами.

Сайт stolix

Поделиться

43

Re: Разработка на Qt (в т.ч. PySide)

А, пардон. Не так понял вопрос.
Кстати, кто знает как разрешить запускать только одну копию приложения?

PageStackWindow у меня не работает для Maemo 5 sad

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

44

Re: Разработка на Qt (в т.ч. PySide)

KiRiK пишет:

Кстати, кто знает как разрешить запускать только одну копию приложения?

Для Harmattan'а это делается очень легко. Достаточно в файле .desktop сделать следующую строчку

Exec=/usr/bin/single-instance /opt/your-appliaction-folder/bin/your-appliaction

Есть более общие рекомендации по этому делу для MeeGo, но они загонные и не факт, что будут работать по дефолту.
А такой вариант гарантировано работает и не требует доп. телодвижений.

KiRiK пишет:

PageStackWindow у меня не работает для Maemo 5 sad

PageStackWindow является частью Qt Components.
На данный момент эти компоненты есть под Harmattan и под Symbian.
Вообще, в готовых проектах (например, GuitarTuner) можно глянуть как народ обходит наличие/присутствие этих компонент под ту или иную платформу.

Поделиться

45

Re: Разработка на Qt (в т.ч. PySide)

Avis пишет:

Достаточно в файле .desktop сделать следующую строчку

Как прописать в .pro файле, что нужно использовать мой .desctop, а не генерировать?

Avis пишет:

Вообще, в готовых проектах (например, GuitarTuner) можно глянуть как народ обходит наличие/присутствие этих компонент под ту или иную платформу.

Да обошел уже. Пришлось компоненты свои писать.
Все-таки, делать целиком кроссплатформенное приложение несколько.. морочно smile

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться