Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Qt

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 12.10.2007, 22:44   #16
Забулдыга
Неактивный пользователь
 
Аватар для Забулдыга
 
Пол:Мужской
Регистрация: 20.04.2007
Сообщений: 55
Репутация: 27
По умолчанию Ответ: начинаем изучать QT

Цитата:
Сообщение от Дайхард Посмотреть сообщение
Застрял посрелине...
виджета LCDDisplay мы не вставляли в диалог, и я даже не смог его

Сорри за очепятку...
Статью исправил. Следующими, наверное, будут статьи про Layoutы.
Кстати, шикарная вещь, если въехать, как ими пользоваться.

Последний раз редактировалось Забулдыга; 12.10.2007 в 23:03..
Забулдыга вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: установка брекетов в москве ценычистка каналов зубасмарт mukc16-80-32-gd-nдома барнхаус каркасныеtk 125 вентилятор для круглых каналов


Старый 17.10.2007, 18:26   #17
kvm
Неактивный пользователь
 
Аватар для kvm
 
Пол:Мужской
Регистрация: 09.12.2006
Адрес: Москва.
Сообщений: 39
Репутация: 19
По умолчанию Ответ: начинаем изучать QT

Кстати, для С++ программистов, кто хочет изучить QT4 с нуля может быть полезна следующая книга:
QT4: Программирование GUI на С++, Жасмин Бланшет и Марк Саммерфилд.

Ссылку дать не могу, так как у меня она на бумажном носителе.
Изложено ОЧЕНЬ доступно.
__________________
Хочешь быть счастливым - будь им! (с) Козьма Прутков.
Ностальгия — это попытка сравнить наихудшее из настоящего с наилучшим из прошлого. (c) ?
kvm вне форума
 
Ответить с цитированием Вверх
Старый 24.10.2007, 15:05   #18
Дайхард
Неактивный пользователь
 
Пол:Мужской
Регистрация: 20.03.2007
Сообщений: 6
Репутация: 2
По умолчанию Ответ: начинаем изучать QT

Блин, я тупой ламер...сори что так долго не отвечал, я не увидел, что тема перепрыгнула на следующую страницу и не первый же год в инете...
...Вобщем все сделал как в статье и получилось, слайдер заработал с первого раза. Правда PushButton, по иде я так понимаю должна бы закрывать прогу, отказалась это делать.
...Ждем следующих статей, если дело это не очень сложное и не отнимает у автора много времени

kvm, об этой кинге уже упоминалось, правда в английском варианте, если достану где электронный вариант русского текста, выложу обязательно.
Дайхард вне форума
 
Ответить с цитированием Вверх
Старый 31.10.2007, 02:37   #19
trdm
Новичок
 
Пол:Мужской
Регистрация: 27.06.2007
Сообщений: 13
Репутация: 40
По умолчанию Ответ: начинаем изучать QT

Цитата:
Сообщение от Дайхард Посмотреть сообщение
kvm, об этой кинге уже упоминалось, правда в английском варианте, если достану где электронный вариант русского текста, выложу обязательно.

Мониторьте ветку:
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..
trdm вне форума
 
Ответить с цитированием Вверх
Старый 01.11.2007, 01:31   #20
Забулдыга
Неактивный пользователь
 
Аватар для Забулдыга
 
Пол:Мужской
Регистрация: 20.04.2007
Сообщений: 55
Репутация: 27
Lightbulb Ответ: начинаем изучать QT

Итак, как я и обещал, продолжение сериала.


Читать тут



ЗЫ: Не забываем говорить спасибо

Последний раз редактировалось Забулдыга; 01.11.2007 в 01:46..
Забулдыга вне форума
 
Ответить с цитированием Вверх
Эти 3 пользователя(ей) сказали cпасибо за это полезное сообщение:
Старый 02.11.2007, 04:15   #21
vladshab13
Неактивный пользователь
 
Регистрация: 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 не открывается. Где заковыка? Не могу сообразить. Заранее благодарю.
vladshab13 вне форума
 
Ответить с цитированием Вверх
Старый 02.11.2007, 19:39   #22
Optimal
Неактивный пользователь
 
Пол:Мужской
Регистрация: 02.11.2007
Адрес: Russia
Сообщений: 1
Репутация: 0
По умолчанию Ответ: начинаем изучать QT

Прошу объясните мне где искать файл .profile в котором настраиваются переменные среды для Qt
В домашней папке у меня такого файла нет и работаю я на Fedore 7
Optimal вне форума
 
Ответить с цитированием Вверх
Старый 03.11.2007, 00:39   #23
Забулдыга
Неактивный пользователь
 
Аватар для Забулдыга
 
Пол:Мужской
Регистрация: 20.04.2007
Сообщений: 55
Репутация: 27
По умолчанию Ответ: начинаем изучать QT

Цитата:
Сообщение от Optimal Посмотреть сообщение
Прошу объясните мне где искать файл .profile

В домашнем каталоге, его надо создать.
Например, если имя пользователя, под которым ты вошел в систему
User, то домашний каталог будет /home/user
В это каталоге надо создать файл .profile и в нем прописать, что-то типа

export $PATH:/путь к Qt:/еще один путь к Qt
Забулдыга вне форума
 
Ответить с цитированием Вверх
Старый 03.11.2007, 06:49   #24
vladshab13
Неактивный пользователь
 
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
По умолчанию Помогите открыть другую форму!

Что, никто не знает как открыть другую форму? Хоть какие-нибудь намеки дайте пожалуйста.
vladshab13 вне форума
 
Ответить с цитированием Вверх
Старый 05.11.2007, 00:09   #25
Забулдыга
Неактивный пользователь
 
Аватар для Забулдыга
 
Пол:Мужской
Регистрация: 20.04.2007
Сообщений: 55
Репутация: 27
По умолчанию Ответ: Помогите открыть другую форму!

Цитата:
Сообщение от vladshab13 Посмотреть сообщение
Что, никто не знает как открыть другую форму? Хоть какие-нибудь намеки дайте пожалуйста.

Ты тут вообще что-то неимоверное написал...
Создай для каждой формы класс производный от 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;

};
и файл result.h

Код:
class Result:public QDialog
{
    Q_OBJECT
public:
    Result(QWidget *parent=0);
    ~Result();

};
Ну а потом, где-то в конструкторе класса Not

Код:
engA=new QPushButton("Hello");
connect(engA, SIGNAL(clicked()), this, SLOT(PressEngA()));
Далее, в самой функции PressEngA пишешь

Код:
Result r;

r.show();
И всё ...

Последний раз редактировалось Забулдыга; 07.11.2007 в 00:09..
Забулдыга вне форума
 
Ответить с цитированием Вверх
Старый 08.11.2007, 01:49   #26
vladshab13
Неактивный пользователь
 
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
По умолчанию Ответ: Помогите открыть форму

Большое спасибо, сейчас буду пробовать. Утром бежал на работу, некогда было ответить. А то здесь у меня есть пара знакомых программеров? но они в Visual Basic.net, и С++ и Qt совсем не знают. А больше спросить не у кого.
vladshab13 вне форума
 
Ответить с цитированием Вверх
Старый 15.11.2007, 05:47   #27
vladshab13
Неактивный пользователь
 
Регистрация: 03.05.2007
Сообщений: 8
Репутация: 1
По умолчанию Ответ: Помогите открыть другую форму

Все получилось. Спасибо. У меня все было правильно. Я создавал проэкт в QT Designer 3.3.8 , и у меня есть только файлы ui.h на каждую форму. А файлов с расширениями .h и .cpp у меня нет. Я так понимаю они скрыты от пользователя. У меня все пошло когда я вместо show() применил exec(). А с show() форма почему то не появляется. Но с exec() форма модальная и невозможно работать с главным окном пока на закроешь открывшуюся форму. Как исправить эту ситуацию? И как можно открыть для просмотра или редактирования файлы .h и .cpp . И еще, у меня в главной форме есть несколько кнопок, которые открывают одну и ту же форму Result. Но в зависимости какая кнопка открыла форму, форма должна показывать различную информацию( т.е. делать определенную выборку из базы данных ). Как передать строковую переменную в открывающуюся форму? Я прошу прощения, что так много вопросов. Читаю книги и форумы, но пока ничего похожего не нашел. Может не там искал.
vladshab13 вне форума
 
Ответить с цитированием Вверх
Старый 15.11.2007, 12:18   #28
trdm
Новичок
 
Пол:Мужской
Регистрация: 27.06.2007
Сообщений: 13
Репутация: 40
По умолчанию Ответ: начинаем изучать QT

http://www.opennet.ru/docs/RUS/kdevelop3/
http://www.opennet.ru/docs/RUS/qt3_prog/
trdm вне форума
 
Ответить с цитированием Вверх
Старый 18.11.2007, 21:48   #29
Забулдыга
Неактивный пользователь
 
Аватар для Забулдыга
 
Пол:Мужской
Регистрация: 20.04.2007
Сообщений: 55
Репутация: 27
По умолчанию Ответ: начинаем изучать QT

Цитата:
Сообщение от vladshab13 Посмотреть сообщение
Как передать строковую переменную в открывающуюся форму?

Если ты делал для каждой формы отдельный класс, то нет ничего проще.
Создай метод класса 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);
}
Функция showEvent, в отличие от SetStringValue, является виртуальной и поэтому
должна быть испольнена в точности так, показано. SetStringValue, наооборот, вымышленная
и может иметь любое название и параметры.
Да, учти, что все примеры я привожу для QT 4.x.x версий.
Он совершенно не похож на Qt3. И почти несовместим. Кроме того, в ближайшем будущем
поддержка Qt3 уйдет и из KDE. 11 декабря выйдет (официально) KDE4 основанный на Qt4. Сами Trolltech предложили верcb. 4.0 еще в далеком 2003. Так что пока не поздно, сделай поправки.

Цитата:
Сообщение от vladshab13 Посмотреть сообщение
Но с exec() форма модальная и невозможно работать с главным окном пока на закроешь открывшуюся форму

А вот и нет. Есть такой хитрый трюк, когда модальное окно возвращает управление сразу, а не после закрытия.
если сделать так:

Код:
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
Keeper13
Неактивный пользователь
 
Регистрация: 16.11.2007
Сообщений: 3
Репутация: 0
Question Ответ: начинаем изучать 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)... да и переименовать их нельзя.
Как быть?
Keeper13 вне форума
 
Ответить с цитированием Вверх
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:43. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.23130 секунды с 10 запросами