Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
12.10.2007, 22:44 | #16 | |||||||||||||||||||||||
Ответ: начинаем изучать QT
Сорри за очепятку... Статью исправил. Следующими, наверное, будут статьи про Layoutы. Кстати, шикарная вещь, если въехать, как ими пользоваться. Последний раз редактировалось Забулдыга; 12.10.2007 в 23:03.. |
||||||||||||||||||||||||
Реклама: | установка брекетов в москве цены | чистка каналов зуба | смарт mukc16-80-32-gd-n | дома барнхаус каркасные | tk 125 вентилятор для круглых каналов |
17.10.2007, 18:26 | #17 |
Ответ: начинаем изучать QT
Кстати, для С++ программистов, кто хочет изучить QT4 с нуля может быть полезна следующая книга:
QT4: Программирование GUI на С++, Жасмин Бланшет и Марк Саммерфилд. Ссылку дать не могу, так как у меня она на бумажном носителе. Изложено ОЧЕНЬ доступно.
__________________
Хочешь быть счастливым - будь им! (с) Козьма Прутков. Ностальгия — это попытка сравнить наихудшее из настоящего с наилучшим из прошлого. (c) ? |
|
Сказали спасибо: |
24.10.2007, 15:05 | #18 |
Неактивный пользователь
Пол: Регистрация: 20.03.2007
Сообщений: 6
Репутация: 2
|
Ответ: начинаем изучать QT
Блин, я тупой ламер...сори что так долго не отвечал, я не увидел, что тема перепрыгнула на следующую страницу и не первый же год в инете...
...Вобщем все сделал как в статье и получилось, слайдер заработал с первого раза. Правда PushButton, по иде я так понимаю должна бы закрывать прогу, отказалась это делать. ...Ждем следующих статей, если дело это не очень сложное и не отнимает у автора много времени kvm, об этой кинге уже упоминалось, правда в английском варианте, если достану где электронный вариант русского текста, выложу обязательно. |
31.10.2007, 02:37 | #19 | |||||||||||||||||||||||
Новичок
Пол: Регистрация: 27.06.2007
Сообщений: 13
Репутация: 40
|
Ответ: начинаем изучать QT
Мониторьте ветку: http://prog.org.ru/forum/index.php/topic,765.0.html там постоянно сылки на литературу мелькают. Если все собрать, будет хороший сборничек.. + есть форум, где лежит инструкция по интеграции QT OS и MS VS: http://www.qtcentre.org/ <<< вобщем где-то тут.. + http://slil.ru/25046728 Последний раз редактировалось trdm; 31.10.2007 в 17:28.. |
|||||||||||||||||||||||
Сказали спасибо: |
01.11.2007, 01:31 | #20 |
Ответ: начинаем изучать QT
Последний раз редактировалось Забулдыга; 01.11.2007 в 01:46.. |
|
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение: |
02.11.2007, 04:15 | #21 |
Неактивный пользователь
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
|
Помогите открыть другую форму!
Плиз Help!!! Господа саксаулы (читать аксакалы), Я новичок в Qt 3, начал писать небольшую программку и стена. У меня в главной форме Not есть кнопка engA, которая должна открывать другое окно (другую форму Result). Есть слот pressengA(), связанный с событием clicked(), кнопки engA, который должен открывать форму Result. Код привожу ниже:
main.cpp - #include <qapplication.h> #include "not.h" #include "result.h" int main( int argc, char ** argv ) { QApplication a( argc, argv ); Not w; w.show(); a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); return a.exec(); } not.ui.h - #include "result.h" #include <qapplication.h> void Not::pressengA() { Result wr; wr.show(); } Result - пустой файл. Ничего туда я не вписал. При нажатии кнопки engA ничего не происходит, т. е. форма Result не открывается. Где заковыка? Не могу сообразить. Заранее благодарю. |
02.11.2007, 19:39 | #22 |
Неактивный пользователь
Пол: Регистрация: 02.11.2007
Адрес: Russia
Сообщений: 1
Репутация: 0
|
Ответ: начинаем изучать QT
Прошу объясните мне где искать файл .profile в котором настраиваются переменные среды для Qt
В домашней папке у меня такого файла нет и работаю я на Fedore 7 |
03.11.2007, 00:39 | #23 | |||||||||||||||||||||||
Ответ: начинаем изучать QT
В домашнем каталоге, его надо создать. Например, если имя пользователя, под которым ты вошел в систему User, то домашний каталог будет /home/user В это каталоге надо создать файл .profile и в нем прописать, что-то типа export $PATH:/путь к Qt:/еще один путь к Qt |
||||||||||||||||||||||||
03.11.2007, 06:49 | #24 |
Неактивный пользователь
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
|
Помогите открыть другую форму!
Что, никто не знает как открыть другую форму? Хоть какие-нибудь намеки дайте пожалуйста.
|
05.11.2007, 00:09 | #25 | |||||||||||||||||||||||
Ответ: Помогите открыть другую форму!
Ты тут вообще что-то неимоверное написал... Создай для каждой формы класс производный от QDialog. В файле main.cpp ничего кроме начальной инициализации трогать не надо, и тем более объект app. Код:
//#include <qapplication.h> //^^^^^^^^^^^^^^^^ регистр имеет значение #include <QApplication> //Во всех примерах рекомендуется именно так. #include "not.h" int main( int argc, char ** argv ) { QApplication a( argc, argv ); Not w; w.show(); return a.exec(); } файл not.h Код:
class Not:public QDialog { Q_OBJECT public: Not(QWidget *parent=0); ~Not(); private slots: void pressEngA(); private: QPushButton *engA; }; Код:
class Result:public QDialog { Q_OBJECT public: Result(QWidget *parent=0); ~Result(); }; Код:
engA=new QPushButton("Hello"); connect(engA, SIGNAL(clicked()), this, SLOT(PressEngA())); Код:
Result r; r.show(); Последний раз редактировалось Забулдыга; 07.11.2007 в 00:09.. |
||||||||||||||||||||||||
Сказали спасибо: |
08.11.2007, 01:49 | #26 |
Неактивный пользователь
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
|
Ответ: Помогите открыть форму
Большое спасибо, сейчас буду пробовать. Утром бежал на работу, некогда было ответить. А то здесь у меня есть пара знакомых программеров? но они в Visual Basic.net, и С++ и Qt совсем не знают. А больше спросить не у кого.
|
15.11.2007, 05:47 | #27 |
Неактивный пользователь
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
|
Ответ: Помогите открыть другую форму
Все получилось. Спасибо. У меня все было правильно. Я создавал проэкт в QT Designer 3.3.8 , и у меня есть только файлы ui.h на каждую форму. А файлов с расширениями .h и .cpp у меня нет. Я так понимаю они скрыты от пользователя. У меня все пошло когда я вместо show() применил exec(). А с show() форма почему то не появляется. Но с exec() форма модальная и невозможно работать с главным окном пока на закроешь открывшуюся форму. Как исправить эту ситуацию? И как можно открыть для просмотра или редактирования файлы .h и .cpp . И еще, у меня в главной форме есть несколько кнопок, которые открывают одну и ту же форму Result. Но в зависимости какая кнопка открыла форму, форма должна показывать различную информацию( т.е. делать определенную выборку из базы данных ). Как передать строковую переменную в открывающуюся форму? Я прошу прощения, что так много вопросов. Читаю книги и форумы, но пока ничего похожего не нашел. Может не там искал.
|
15.11.2007, 12:18 | #28 |
Новичок
Пол: Регистрация: 27.06.2007
Сообщений: 13
Репутация: 40
|
Ответ: начинаем изучать QT
|
18.11.2007, 21:48 | #29 | ||||||||||||||||||||||||||||||||||||||||||||||
Ответ: начинаем изучать QT
Если ты делал для каждой формы отдельный класс, то нет ничего проще. Создай метод класса SetStringValue(QString strValue) и приватное свойство QString strVal; перед вызовом метода show() , сначала вызови метод SetStringValue и передай ему в качестве параметра эту строку. Код:
class Result:public QDialog { Q_OBJECT public: Result(QWidget *parent=0); ~Result(); void SetStringValue(QString); private: void showEvent(QShowEvent *event); private: QString strVal; }; информацию. Для этого надо перехватить событие формы showEvent и в нем установить переданное значение... Код:
void Result::showEvent(QShowEvent *event) { //некий элемент отображения на форме... someLabel->setText(strValue); } должна быть испольнена в точности так, показано. SetStringValue, наооборот, вымышленная и может иметь любое название и параметры. Да, учти, что все примеры я привожу для QT 4.x.x версий. Он совершенно не похож на Qt3. И почти несовместим. Кроме того, в ближайшем будущем поддержка Qt3 уйдет и из KDE. 11 декабря выйдет (официально) KDE4 основанный на Qt4. Сами Trolltech предложили верcb. 4.0 еще в далеком 2003. Так что пока не поздно, сделай поправки.
А вот и нет. Есть такой хитрый трюк, когда модальное окно возвращает управление сразу, а не после закрытия. если сделать так: Код:
Result r; //Установить признак модальности извне... r.setModal(true); r.show(); while(!r.IsSomeConditionMet()) { qApp->processEvents(); //Тут еще можно вставить обработку какого-то процесса... ... //В случае каких либо непредвиденных ситуаций, окно можно закрыть отсюда if(errorCondition) { r.close(); break; } } вести модальный цикл самому. Как ты понял, функцию IsSomeConditionMet тебе придеться самому определить в классе Result. Переменная errorCondition вымышленная. Так, для нагдядности. Последний раз редактировалось Забулдыга; 18.11.2007 в 22:13.. |
|||||||||||||||||||||||||||||||||||||||||||||||
20.11.2007, 14:39 | #30 |
Неактивный пользователь
Регистрация: 16.11.2007
Сообщений: 3
Репутация: 0
|
Ответ: начинаем изучать QT
Я - полностью начинающий (в смысле и С и QT)... Но в общем о чем тут говорилось понимаю и примеры такого содержания меня очень радуют...
Вопросик возник,... Вот создал я окно в дизайнере... (Имя, Отчество... ну и кнопочки две). И захотел я ещё добавить кнопочку "Очистить" Смастерил Слот в mydialoh.h private slots: void myslot(); Описал его в mydialoh.cpp void MyDlg::myslot() { QMessageBox msgBox; msgBox.setIcon(QMessageBox::Question); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setText(QString::fromLocal8Bit("Вы уверены, что вы хотите очиcтить?")); msgBox.setWindowTitle(QString::fromLocal8Bit("Точно...")); switch (msgBox.exec()) { case QMessageBox::Yes: // yes was clicked this->leFName-> setText(QString::fromLocal8Bit("")); this->leSName-> setText(QString::fromLocal8Bit("")); this->leLName-> setText(QString::fromLocal8Bit("")); this->lePhone-> setText(QString::fromLocal8Bit("")); this->leMail-> setText(QString::fromLocal8Bit("")); break; case QMessageBox::No: break; default: break; } } И ещё добавил кнопочку в моё окошко (но не в дизайнере): Код из конструктора диалога: ... QPushButton *button = new QPushButton(QString::fromLocal8Bit("Очистить")); // Кнопка. connect(button, SIGNAL(clicked()), this, SLOT(myslot())); button->show(); ... И кнопка влезла в левый вверхний угол окна... В принципе можно посидеть подумать и влепить её по координатам... но, хотелось бы засунуть её в ЛэйАут... в тот, в котором две кнопки Что бы получилось так: |~~~~~~~~~| [Очистить] [Принять] [Отменить] Но воспользоваться : /имя Layouta/.addWidget(button, 1); не получаеться, так как у если посмотреть в Qt Designer, то у лэйаутов написано <noname> (и у Spacer)... да и переименовать их нельзя. Как быть? |