Russian Qt Forum
Июля 06, 2025, 00:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 28 29 [30] 31 32 ... 38
436  Qt / Пользовательский интерфейс (GUI) / Как замостить центральный виджет рисунком? : Сентября 20, 2010, 08:11
Центральный виджет есть QStackWidget. Пока в него не добавленно ни одного виджета, нужно показывать фон, замещенный картинкой, пример в прикреплении. Как такое сделать в Qt4?

Пробовал в конструктор центрального виджета вставить
Код:
    QPalette palette;
    palette.setBrush(backgroundRole(), QBrush(QPixmap(":icons/logo.xpm")));
    setPalette(palette);
- не отрисовывается рисунок. Если переопределить паинтЭвэнт
Код:
void MyWidget::paintEvent(QPaintEvent *event)
{
        QPainter painter(this);
        painter.drawPixmap(rect(), QPixmap(":icons/logo.xpm"));
}
то рисуется один рисунок растянутый на весь центральный виджет.
437  Разное / Говорилка / Re: Вопрос о Qt. : Сентября 19, 2010, 08:26
Цитировать
Т.е. чтоб заменить рабочий стол на свою программку, я должен написать свою оболочку.
- Нет. Можно (или нужно) в любом оконном менеджере запустить свою программу на весь экран.

А вообще зачем заменять рабочий стол или писать свой? В чем задача стоит? Я так пологаю автор хочет сделать киоск.

Для этой задачи можно использовать готовый оконный менеджер, возможно даже KDE.
Мы делали так:
-Ставили голый линукс (без кде, гнома и т.п.),
-ставили xorg
-ставили оконный менеджер icewm,
-ставили свою программу, которая должна быть рабочим столом. 
-Настраивали запуск иксов так, чтоб запускался оконный менеджер и в в нем запускалась наша программа в full-screen.
-настраивали оконный менеджер таким образом, чтоб не было панели задач с меню "пуск" и у программы не было заголовка с кнопками "свернуть", "свернуть в окно", "закрыть". Получался  - киоск, в котором пользователь может работать только с одной программой растянутой на весь экран.

Вместо icewm можно использовать любой другой легкий оконный менеджер.
438  Qt / Qt-инструментарий / Re: QtCreator и WinGW : Сентября 17, 2010, 17:16
Цитировать
огда проверь, в нужном ли месте находится qmake. И убедись, что в настройках проекта выбран правильный профиль Qt
Проверил. qmake находится в нужном месте. Если бы qmake был бы в др. месте, то в диалоге настроек (см выше) путь "Размещение Qmake был бы подсвечен красным. В настройках проекта выбран правильный профиль.
Цитировать
Кстати, в Qt при установке прописываются пути, поэтому копировать нужно в ту же папку, в которую он был установлен на первой машине.
Но вот это нереально. На 1-ой установил на диск С, на второй прав на С нет. Тока на Д.

В общем добил админа - он установил мне креатор нормально. Всё заработало. Но вопрос не решен. Есть еще у меня чистая машина, попробую до сути докопаться и опробовать туда  скопипастить папку с Qt и там поэкспериментирую. Если есть еще у кого какие мысли - выкладывайте.

439  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Сентября 17, 2010, 06:04
где используется время установленное функцией setCharIntervalTimeout? в read?
440  Qt / Qt-инструментарий / Re: QtCreator и WinGW : Сентября 17, 2010, 05:04
Прописал, не помогло Грустный. Там, где нормально сотит креатор, нет в path этой папки.
441  Qt / Qt-инструментарий / QtCreator и WinGW : Сентября 16, 2010, 09:24
Поставил QtCreator из SDK на один комп. На другом нет прав администратора, поэтому туда просто скопировал всю пaпку с установленным qtcreator. Не могу собрать проект. При сборке ошибка
Цитировать
Не выбран корректный профиль Qt. Выберите его в Инструменты - Параметры
Ошибка во время сборки проекта TeremQt
Во время выполнения сборки на этапе 'QMake'
Прерванная сборка.

полез в настройки - там .... см скриншот. Нет строки с указанием папки с mingw. что и где ещё нужно настроить, чтоб сборка заработала?
442  Qt / Многопоточное программирование, процессы / Re: Сигнально-слотовое соединение потоков : Сентября 06, 2010, 09:30
Спасибо, проблема решена
443  Qt / Многопоточное программирование, процессы / Сигнально-слотовое соединение потоков : Сентября 05, 2010, 20:26
Есть GUI поток и второй поток MyThread. Нужно обмениваться событиями между потоками. Решил через слоты-сигналы. В главном потоке генерирую сигнал, во втором потоке должен обрабатываться слот. Не получается. Взял готовый пример из "Макс Шлее - QT4.5. Профессиональное программирование на C++." (стр 618-621). Немножко подправил его: добавил кнопку, чтоб контролировать GUI поток.
Код:
#include <QtGui>

// ======================================================================
class MyThread : public QThread {
Q_OBJECT
private:
    int m_nValue;

public:
MyThread() : m_nValue(10){}

void run(){exec();}

signals:
void finished();
    void currentValue(int);

public slots:
    void slotNextValue()
    {
        emit currentValue(--m_nValue);

if (!m_nValue)
{
            emit finished();
        }
while(1) usleep(100);
       
    }
};

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLCDNumber   lcd;
QPushButton *button = new QPushButton(QString("Button"));
    MyThread     thread;

QTimer timer;
QObject::connect(&timer, SIGNAL(timeout()), &thread, SLOT(slotNextValue()));
timer.start(1000);



    QObject::connect(&thread, SIGNAL(currentValue(int)),
                     &lcd,    SLOT(display(int))
                    );
    QObject::connect(&thread, SIGNAL(finished()),
                     &app,    SLOT(quit())
                    );

    lcd.setSegmentStyle(QLCDNumber::Filled);
    lcd.display(10);
    lcd.resize(220, 90);
QWidget widget;
QHBoxLayout *layout = new  QHBoxLayout;
layout->addWidget(&lcd);
layout->addWidget(button);
widget.setLayout(layout);
widget.show();
    thread.start();
 
    return app.exec();
}

#include "main.moc"

Таймер в основном потоке генерирует сигнал и в потоке MyTread должен быть вызван слот slotNextValue(). Чтоб проверить в каком из потоков вызывается слот решил слот подвесить, добавив строку while(1) usleep(100). Попадая в slotNextValue  GUI поток виснет, т.е. получается что слот обрабатывается в главном потоке. Как сделать чтоб сигнал из GUI потока вызывал слот во втором потоке?

Пробовал сделать соединенеи
 QObject::connect(&timer, SIGNAL(timeout()), &thread, SLOT(slotNextValue()), Qt::QueuedConnection);
или
QObject::connect(&timer, SIGNAL(timeout()), &thread, SLOT(slotNextValue()), Qt::DirectConnection);
не помогает. Gui также виснит.

444  Qt / Установка, сборка, отладка, тестирование / Re: Ошибка Во время выполнения сборки на этапе 'QMake' : Сентября 01, 2010, 05:44
нешел в чем была проблемма. Покапался в настройках проекта. В основных настройках была установленна галочка "Фоновая сборка" и был установлен несуществующий каталог. При чем интересно, проект лежит в папке c:/work/MyProj/trunk. Указываю несуществующую папку, например c:/work/MyProj/trunkssss, creator создает папку c:/work/MyProj/trunkssss и делает там сборку. Но если указать несуществующую папку на несущюствующем диске, как у меня было, например d:/work/MyProj/trunk, то тут-то creator загибается и выдает ошибку "Невозможно запустить процесс c:/qt/2010.01/qt/bin/qmake.exe". По мойму это глюк.
445  Qt / Установка, сборка, отладка, тестирование / Ошибка Во время выполнения сборки на этапе 'QMake' : Августа 31, 2010, 12:45
поставил QtCreator (sdk 2010.1). Собираю рабочий проект. Ошибка

Код:
Выполняется сборка проекта MyProj...
Невозможно запустить процесс c:/qt/2010.01/qt/bin/qmake.exe
Ошибка во время сборки проекта MyProj
Во время выполнения сборки на этапе 'QMake'

захожу в рабочую папку, выполняю c:/qt/2010.01/qt/bin/qmake.exe MyProj.pro   -  работает. В чем может быть проблема?

вот настройки qt
446  Qt / Пользовательский интерфейс (GUI) / Re: QTreeView : Августа 27, 2010, 11:28
Цитировать
так что все же... сначала документация... потом поиск... и в последнюю очередь форум.. ибо ни у кого нету желания мусолить одну и ту же проблему то 100 раз....
ну во 1-х ни кто ни кого мусолить не заставляет против желания. лень написать ответ в одно слово - не пиши. А вот длиннющую подколку писать не лень. 
а во 2-х ну с чего вы взяли что я решаю проблему в обратной последовательности. Почему на человека сразу лепят клеймо - "лень", "не уважение". Естественно сначало проштудировал асистент, потом изучал демки, как троли это делают, потом поиск на форуме, потом поиск в гугле, только потом уже соизволил дерзость побеспокоить участников форума своим вопросом.

Кстати, в QTDemo->Item Views->Simple Tree Model не вызывается метод setEditTriggers, однако их QTreeView нередактируемый. Почему?
447  Qt / Пользовательский интерфейс (GUI) / Re: QTreeView : Августа 27, 2010, 06:19
а вот еслиб ты подумал над ключевым вопросом, чтобы сделать из него нормальный заголовок темы, а не просто название виджета.
А то я не думал.  Сам знаю что заголовок кривой, но лучшего не придумал. Тут же темa "QTreeWidget" и ни каких придирок.
Цитировать
Да потом бы догадался получившийся заголовок воткнуть в поиск по форуму.
ООО!!! Есть ПОИСК!!! Да Вы что!? Никогда бы не подумал! Ну спасибо, Вы открыли мне глаза! Ну теперь все проблемы в считанные секунды решу....   Форум наверно существует не для того, чтобы получить ответ "Воспользуйся поиском" или  "читай асистент". Я даже не знал в QTreeView ли проблема? Может запрет нужно выставлять в моделе, или в атеме. В QDemo есть примеры, в том числе "Simple Tree Model Example", но там такого метода я не заметил. У них почему-то по умолчанию нет редактирования.

Абстрактные советы типа "читай доки", "гугли", "подумай сам", "пользуй поиск" - давно уже ни кому ни каких результатов не дают. Вместо вашего бесмысленного длинного ответа с подё....кой можно было ни чего не писать или написать одно слово "setEditTriggers", или правильный, по твоему мнению, заголовок который в поиске сразу найдет ответ.

Код:
void	setEditTriggers ( EditTriggers triggers )

Спасибо, проблема решена.

448  Qt / Пользовательский интерфейс (GUI) / QTreeView : Августа 26, 2010, 20:51
Отобразил дерево в QTreeView. По двойному клику по любой ячейке вызывается редактирование текста в ячейке. Ну могу понять как запретить редактирование?
449  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Июля 07, 2010, 18:30
хотя "См. определение в файле serialdeviceinfo.h  строка 35" - нашел, но где-то в конце описания. В асистанте - название класса, файл описания. В справочнике на с++ перед описанием функции или класса - инклуде
Цитировать
atoi()

#include <stdlib.h>
int atoi(const char *str);
  В справочник на СИ - аналогично. А тут как-то всё наоборот, сначало
Цитировать
Начало работы с классом необходимо начинать с создания экземпляра объекта SerialDeviceInfo.
Пример:
Код:
        ...
        SerialDeviceInfo *sdi = new SerialDeviceInfo(this);
        ...
Пробую по примеру создать - не компилируется. нужен инклуде. лазишь по примерам, находишь. Далее делаешь постепенно все по тексту,,,,, описание заканчивается. в самом конце контакты автора и вдруг "См. определение в файле serialdeviceinfo.h  строка 35" ))
450  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Июля 07, 2010, 18:10
Отзыв и предложение: Почему бы в документации не написать как эти классы прикрутить к проекту, в каких *.h эти классы описаны? например что-то типа

"В *.pro файл добавте
INCLUDEPATH     += D:\soft\Qt\serportM\trunk\qserialdevice
QMAKE_LIBDIR    += D:\Soft\Qt\serportM\trunk\build\lib\qintegratedserialdevice\release
LIBS            += -lqserialdevice"

А то приходится по примерам лазить. Мелочь - а не приятно. Ну хотя бы какой *.h файл включать нужно - это уж в первую очередь нужно было в доке прописать.
Страниц: 1 ... 28 29 [30] 31 32 ... 38

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