Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: taifun от Октябрь 01, 2009, 07:43



Название: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 07:43
Здраствуйте, установил Qt Creator 1.2.1, поставил кнопочку на форме, теперь мне необходимо воспользоваться компонентом QFileDialog. нужно, что бы на жал на кнопку выполз QFileDialog выбрал файл и его название вывелось в заголовке формы. Не понимаю как нажатием кнопки вызвать QFileDialog. вот закрытие формы сделал:
Код:
Sender - Button
Signal - clicked ()
Receiver - MainWindows
Slot - close ()
а для вызова QFileDialog не понятно, что нужно ствить для Receiver и Slot. Да и вопрос еще вот в чем: то что это прописать в ручную можно это понятно, а через редактор Signal and Slot Editor можно сделать как-нибудь или все же приедтся вручную писать если вручную, то что и в каком файле?


Название: Re: работа в Qt Creator 1.2.1
Отправлено: SimpleSunny от Октябрь 01, 2009, 09:11
Необходимо создать слот и связать его с нажатием кнопки.
Название методов писат по памяти.

Код
C++ (Qt)
void openFileDialog()
{
   QString fileName = QFileDialog::getSaveName();
   if (fileName.isEmpty())
       return;
 
   ...
}


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 12:40
готово, сделал вручную, хотя хочется все через IDE, но видимо нельзя. Вот еще такой вопрос:
добавил на форму 7 label-ов, смотрел - работают. отображаются, ставлю 8 в программе пиши что бы при нажатие на кнопку менялся текст, а класс формы не видит 8 лейбл, хотя в ui_namefile.h он присутствует? не понимаю в чем проблема  ???


Название: Re: работа в Qt Creator 1.2.1
Отправлено: SimpleSunny от Октябрь 01, 2009, 12:51
НЕ совсем понятно в чем проблема. Ты создаешь 8 лейбл програмно, а при компиляция появляется ошибка?


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 13:23
нет-нет, точно так же вытаскиваю его мышкой из панели компонентов. Пишу
Код:
ui->
в этот момет обынчо появляется список с возможными элементами (label_6, label_7), а label_8 нет, соответсвенно если сам пишу руками
Код:
ui->label_8->setText(trUtf8("Привет!"));
то компилятор начинает ругаться на label_8. Это исправляется закрытием и открытием программы  :-\ но это не решение проблемы


Название: Re: работа в Qt Creator 1.2.1
Отправлено: SimpleSunny от Октябрь 01, 2009, 13:40
Дизайнер запускал отдельно или использовал встроенный в QtCreator?
Может просто забыл сохранить файл *.ui?


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 14:31
Встроенный использую. Точно не забыл потому, что проверял и перепроверял раза 3. Вот и сейчас добавил 9 сохранил пишу

ui->

появляется список, а lable_9 нет


Название: Re: работа в Qt Creator 1.2.1
Отправлено: BRE от Октябрь 01, 2009, 14:49
Встроенный использую. Точно не забыл потому, что проверял и перепроверял раза 3. Вот и сейчас добавил 9 сохранил пишу

ui->

появляется список, а lable_9 нет
После того, как ты сохранил ui-файл, нужно еще запустить uic (это компилятор ui), что бы он пересоздал файл ui_filename.h. И вот только тогда редактор начнет видеть этот символ.
При компиляции проекта uic вызывается автоматически.


Название: Re: работа в Qt Creator 1.2.1
Отправлено: SimpleSunny от Октябрь 01, 2009, 14:55
После того, как ты сохранил ui-файл, нужно еще запустить uic (это компилятор ui), что бы он пересоздал файл ui_filename.h. И вот только тогда редактор начнет видеть этот символ.
При компиляции проекта uic вызывается автоматически.

Этот шаг с некоторой (на 1.2.0 уже работает) версии не обязателен. Если редактируешь ui файл встроенным в QtCreator Designerom, то он и так, после сохранения файла, должен видеть добавленные виджеты без перекомпиляции.


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 15:00
После того, как ты сохранил ui-файл, нужно еще запустить uic (это компилятор ui), что бы он пересоздал файл ui_filename.h. И вот только тогда редактор начнет видеть этот символ.
При компиляции проекта uic вызывается автоматически.

вот оно что, тогда дело вот в чем:
Qt Creator 1.2.1 устоновить-то я устновил только сборку и компиляцию я делаю из консули:
Код:
qmake -project
qmake
make
./nameProg
а хотелось бы из IDE это делать (быстрее все-таки), но дело в том, что когда я нажимаю кнопку "Build All" в Compile Output пишет:
Код:
Running build steps for project ProTest...
Could not start process
Error while building project ProTest
When executing build step 'QMake'
в чем проблема не понимаю. сижу под Linux (второй месяц).


Название: Re: работа в Qt Creator 1.2.1
Отправлено: BRE от Октябрь 01, 2009, 15:03
Вот таких тонкостей я не знал. Сам QtCreator'ом не пользуюсь.  :)


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 15:12
Вопрос открыт, но если подскажете как в консуле делать, то буду очень благодарен. А так я установил уже NetBeans 6.7.1, Qt Creator 1.2.1 и не в одной не могу компилировать проекты, но думаю со временем все-таки мне помогут разобраться в этих программах.


Название: Re: работа в Qt Creator 1.2.1
Отправлено: BRE от Октябрь 01, 2009, 15:25
Вопрос открыт, но если подскажете как в консуле делать, то буду очень благодарен. А так я установил уже NetBeans 6.7.1, Qt Creator 1.2.1 и не в одной не могу компилировать проекты, но думаю со временем все-таки мне помогут разобраться в этих программах.
Да в консоли все просто.
qmake
make

Что-то поменял в существующих файлах (.h .cpp .ui).
make

Если добавил файлы, редактируем .pro и
qmake
make


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 15:41
Да в консоли все просто.
qmake
make

Что-то поменял в существующих файлах (.h .cpp .ui).
make

Если добавил файлы, редактируем .pro и
qmake
make


в имяфайла.ui добавил компоненту label_9
сохранил
сделал, как Вы сказали, получил :

Код:
winProTest.cpp:53: error: 'class Ui::MainWindow' has no member named 'label_9'
make: *** [winProTest.o] Error 1


Название: Re: работа в Qt Creator 1.2.1
Отправлено: BRE от Октябрь 01, 2009, 15:50
в имяфайла.ui добавил компоненту label_9
сохранил
сделал, как Вы сказали, получил :

Код:
winProTest.cpp:53: error: 'class Ui::MainWindow' has no member named 'label_9'
make: *** [winProTest.o] Error 1
Странно.
А покажи свой pro-файл.


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 15:52
######################################################################
# Automatically generated by qmake (2.01a) Thu Oct 1 15:23:41 2009
######################################################################

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += winProTest.h
FORMS += winProTest.ui
SOURCES += main.cpp winProTest.cpp


Название: Re: работа в Qt Creator 1.2.1
Отправлено: BRE от Октябрь 01, 2009, 15:59
Да вроде нормально все.
Это же тестовый примерчик, сохрани в архиве (cpp, h, ui, pro файлы) и выложи здесь.


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 01, 2009, 16:02
спасибо, что помогаите. я ща домой поехал, возможно вечером зайту еще. А так до понедельника  ;)


Название: Re: работа в Qt Creator 1.2.1
Отправлено: BRE от Октябрь 01, 2009, 16:16
У меня все нормально, qmake & make, запустил designer добавил/удалил label, make - все собирается (uic вызывается).

Кстати, когда ты выполняешь make, ты такие сообщения в консоли видишь?
Цитировать
make: Warning: File `ProTest.pro' has modification time 8,1e+03 s in the future
Или мы в разных часовых поясах находимся?


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 06, 2009, 08:16
ага. когда делаю через консуль у меня тоже все работает, но проблема в Qt Creator и скорее всего проблема здесь:
Код:
    [nudet11] /home/mtsdeveloper > ls -la /usr/bin/qmake
    lrwxrwxrwx  1 root root 23 Feb 26  2009 /usr/bin/qmake -> ../lib/qt-3.3/bin/qmake
    [nudet11] /home/mtsdeveloper > ls -la /usr/bin/uic
    lrwxrwxrwx  1 root root 21 Feb 26  2009 /usr/bin/uic -> ../lib/qt-3.3/bin/uic


то есть IDE использует программы qt-3.3
http://developers.sun.ru/forum/viewtopic.php?f=20&t=409&p=1366#p1366

хотя я может чего-то и не понимаю, будем значит разбираться по-тихоньку:
Код:
[nudet11] /home/mtsdeveloper/Plotnikov/Programmirovanie/TestT/ProTest > make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB-DQT_SHARED -I/usr/local/Trolltech/Qt-4.5.2/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.5.2/include/QtCore -I/usr/local/Trolltech/Qt-4.5.2/include/QtGui -I/usr/local/Trolltech/Qt-4.5.2/include -I. -I. -I. -o winProTest.o winProTest.cpp
winProTest.cpp: In member function `void MainWindow::selectTable()':
winProTest.cpp:53: error: 'class Ui::MainWindow' has no member named 'label_9'
make: *** [winProTest.o] Error 1
[nudet11] /home/mtsdeveloper/Plotnikov/Programmirovanie/TestT/ProTest >  

=======================================================================================
Чет я совсем запутался. Мне нужно добавить QFileDialog. Подскажите где и что нужно написать, а то ничиге не получается.


Название: Re: работа в Qt Creator 1.2.1
Отправлено: taifun от Октябрь 08, 2009, 08:04
установил Qt из под рута и IDE заработала как положено!
QFileDialog - тоже разобрался, чет я сам тупил( как обычно объявляем в namefile.h в разделе publick компонент, инициализируем namefile.срр )