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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 28 29 [30] 31 32 ... 38
436  Qt / Многопоточное программирование, процессы / Re: Сигнально-слотовое соединение потоков : Сентябрь 06, 2010, 09:30
Спасибо, проблема решена
437  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 также виснит.

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

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

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

Код:
void	setEditTriggers ( EditTriggers triggers )

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

442  Qt / Пользовательский интерфейс (GUI) / QTreeView : Август 26, 2010, 20:51
Отобразил дерево в QTreeView. По двойному клику по любой ячейке вызывается редактирование текста в ячейке. Ну могу понять как запретить редактирование?
443  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" ))
444  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 файл включать нужно - это уж в первую очередь нужно было в доке прописать.
445  Qt / Пользовательский интерфейс (GUI) / Re: Как показать текст на ComboBox? : Июль 06, 2010, 18:52
Все варианты попробовал. Больше всех подошел с ComboBoxProxyStyle.
Всем спасибо. Проблема решена.
446  Qt / Пользовательский интерфейс (GUI) / Re: Как показать текст на ComboBox? : Июль 06, 2010, 04:55
Могу предложить следующий вариант, не идеальный, но рабочий.


Ну, тоже коряво как-то, но работает. Спасибо. Только вот текст "Select something..." серенький только когда фокус на ComboBox-e. Ну могу понять почему. Как его заставить серым писать при любом фокусе?


ps Странно что такой функции нет в qt. Приходится извращаться. А подобное поведении интерфейса встречается часто. Ну текст-то писать, хотя бы простым шрифтом, при currentItem == -1 ,,,,,, это-то уж были обязаны были сделать еще тролли.
447  Qt / Пользовательский интерфейс (GUI) / Как показать текст на ComboBox? : Июль 05, 2010, 20:43
Есть ComboBox с некоторыми строками, например "Пушкин", "Есенин". Пока не выбрали ни нужно ни каких поэтов показывать, а нужно показать <Выберите поэта>, бледным цветом шрифта. Как это сделать?

Можно сделать ComboBox с одной строкой "<Выберете поэта>" и показать её бледным шрифтом. А на клик прикрутить слот который удалит строку "<Выберете поэта>" и добавит строки "Пушкин" и "Есенин". Но как то это коряво.

Если не показывать ни одной строки из списка айтемов комбобокса (setCurrentIndex(-1)), то отображается пустая строка. Как в эту пустую строку текст поместить?
448  Qt / Установка, сборка, отладка, тестирование / Re: Qt4, Linux: Как отлаживаться по Qt с использованием пакетов debuginfo? : Июль 05, 2010, 17:18
попробуй доставь libqt4-debugsource и libqt4-devel.
А вообще, для чего такая необходимость отлаживаться именно с использованием пакетов debuginfo? Что мешает поставить SDK Qt и отлаживаться как вздумается?
449  Qt / Установка, сборка, отладка, тестирование / Post mortem debugging? : Июль 04, 2010, 09:22
Вещь хорошая. Ка бы её освоить? Где можно почитать про использование "Post mortem debugging" в Qt4 с практическими примерами?
450  Qt / Общие вопросы / Как можно из floata получить QString? : Июнь 11, 2010, 07:24
в теме вопрос. Нужно чтоб строка получилась так

float        QString
123456      123456
12345.6     12345
1234.56     1234.6
123.456     123.46
12.3456     12.346
1.23456     1.235
0.12345     0. 123
0.01234     0.012
0.00123     0.001
0.00012     0

Ну в общем как-то так. С помощью sprintf и char* можно добится подобного форматировния. Можно ли подобного добится средствами Qt или std?
Страниц: 1 ... 28 29 [30] 31 32 ... 38

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