Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

SmirnoFFx

Кроссплатформенное программирование на Qt4

Рекомендованные сообщения

Всем доброго времени суток!

 

Подскажите, как откомпилировать кусок кода, чтобы работало в linux (напр. мандрива)? Можно ли откомпилировать из под windows для linux?

 

Спасибо за советы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Всем доброго времени суток!

 

Подскажите, как откомпилировать кусок кода, чтобы работало в linux (напр. мандрива)? Можно ли откомпилировать из под windows для linux?

 

Спасибо за советы.

В принципе можно, надо просто указать make как компилировать (под какую систему). Но у меня не получалось. Просто пере компилировал исходники под нужной операционкой

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Просто пере компилировал исходники под нужной операционкой

 

Каким образом? Расскажите, если не затруднит. Я вот установил Qt4 под linux, но Qt Creator отказывается компилировать (ругается то ли на отсутствие make, то ли на что то еще). GNU C++ не устанавливал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Просто пере компилировал исходники под нужной операционкой

 

Каким образом? Расскажите, если не затруднит. Я вот установил Qt4 под linux, но Qt Creator отказывается компилировать (ругается то ли на отсутствие make, то ли на что то еще). GNU C++ не устанавливал...

Что выдает компилятор в студию -это раз.

Второе. После инсталятора еще требуются кое какие действия

Во первых должен стоять cmake

Во вторых необходимо доустановить кучу библиотек QT из раздела библиотеки для разработчика. В третьих надо настроить пути в профеле

вот их мануал

  INSTALLING QT FOR X11


You may need to be root, depending on the permissions of the directories
you choose to install Qt in.


1.  Unpack the archive, unless you already have:

cd /usr/local
gunzip qt-%VERSION%.tar.gz	# uncompress the archive
tar xf qt-%VERSION%.tar	# unpack it

This creates the directory /usr/local/qt-%VERSION% containing the
files from the main archive.

Rename qt-%VERSION% to qt (or make a symlink):

mv qt-%VERSION% qt

The rest of this file assumes that Qt is installed in /usr/local/qt.


2.  Set some environment variables in the file .profile (or .login,
depending on your shell) in your home directory. (Create the
file if it is not there already.)

QTDIR			- wherever you installed Qt
PATH			- to locate the moc program
MANPATH 		- to access the Qt man pages
LD_LIBRARY_PATH		- for the shared Qt library

If you're using GNU g++, you may also want to set these:

LIBRARY_PATH		- contains library file path
CPLUS_INCLUDE_PATH	- contains C++ include file path

This is done like this:
In .profile (in case your shell if bash, ksh, zsh or sh):

QTDIR=/usr/local/qt
PATH=$QTDIR/bin:$PATH
if [ $MANPATH ]
then
	MANPATH=$QTDIR/man:$MANPATH
else
	MANPATH=$QTDIR/man
fi
if [ $LD_LIBRARY_PATH ]
then
	LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
else
	LD_LIBRARY_PATH=$QTDIR/lib
fi
LIBRARY_PATH=$LD_LIBRARY_PATH
if [ $CPLUS_INCLUDE_PATH ]
then 
	CPLUS_INCLUDE_PATH=$QTDIR/include:$CPLUS_INCLUDE_PATH
else
	CPLUS_INCLUDE_PATH=$QTDIR/include
fi

export QTDIR PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH
export CPLUS_INCLUDE_PATH

In .login (in case your shell is csh or tcsh):

if ( ! $?QTDIR ) then
	setenv QTDIR /usr/local/qt
endif
if ( $?PATH ) then
	setenv PATH $QTDIR/bin:$PATH
else
	setenv PATH $QTDIR/bin
endif
if ( $?MANPATH ) then
	setenv MANPATH $QTDIR/man:$MANPATH
else
	setenv MANPATH $QTDIR/man
endif
if ( $?LD_LIBRARY_PATH ) then
	setenv LD_LIBRARY_PATH $QTDIR/lib:$LD_LIBRARY_PATH
else
	setenv LD_LIBRARY_PATH $QTDIR/lib
endif
if ( ! $?LIBRARY_PATH ) then
	setenv LIBRARY_PATH $LD_LIBRARY_PATH
endif
if ( $?CPLUS_INCLUDE_PATH ) then
	setenv CPLUS_INCLUDE_PATH $QTDIR/include:$CPLUS_INCLUDE_PATH
else
	setenv CPLUS_INCLUDE_PATH $QTDIR/include
endif


3.  Compile the Qt library, the example programs and the tutorial.

The qt directory contains a Makefile which compiles everything
(including the examples and the tutorial) for all platforms.

Type:

make

You'll see a long list of platform/compiler/library combinations,
for example "linux-g++-shared" and "solaris-cc-static".
We recommend that you build a shared library. Applications linked
with shared libraries get much smaller than those linked with
static libraries.

To choose a shared library for Linux, using the G++ compiler:

make linux-g++-shared

To create the library and compile all examples and the tutorial:

make

If your platform or compiler is not listed, read PORTING.  If it
is listed but you have problems, see http://www.troll.no/platforms/


4.  In very few cases you may need to run /sbin/ldconfig or something
similar at this point if you are using shared libraries.

If you have problems running the example programs, e.g. messages like 

 can't load library 'libqt.so.1'  

you probably need to put a reference to the qt library in a
configuration file and run /sbin/ldconfig as root on your system.
And don't forget to set LD_LIBRARY_PATH as explained in 2) above.


5.  The online HTML documentation is installed in /usr/local/qt/html/
The main page is /usr/local/qt/html/index.html
The man pages are installed in /usr/local/qt/man/


That's all.  Qt is now installed.

после того как все за компилируется под линухой, поговорим об остальном

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ув. DeathStalker, я устанавливал Qt под linux совсем не так. Я скачал Qt (http://qt.nokia.com/downloads), вкладка LGPL / Free, а именно Qt SDK for Linux/X11 32-bit. Там обычный bin файл, которому я назначил соотв. права

chmod u+x qt-sdk-linux-x86-opensource-2009.03.1.bin

и установил

./qt-sdk-linux-x86-opensource-2009.03.1.bin

 

Далее в разделе меню "разработка" появился Qt Creator. Запустил, написал программку

 #include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
 QApplication app(argc, argv);

 QPushButton hello("Hello world!");

 hello.show();
 return app.exec();
}

Пытаюсь откомпилировать - не компилируется!...

Сообщения компилятора пока не могу сказать, т.к. переустанавливаю mandriva.

З.Ы. Устанавливаю все на Mandriva Linux 2009 Spring Free (http://mandriva.ru/downloads/downloads2/).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ув. DeathStalker, я устанавливал Qt под linux совсем не так. Я скачал Qt (http://qt.nokia.com/downloads), вкладка LGPL / Free, а именно Qt SDK for Linux/X11 32-bit. Там обычный bin файл, которому я назначил соотв. права

chmod u+x qt-sdk-linux-x86-opensource-2009.03.1.bin

и установил

./qt-sdk-linux-x86-opensource-2009.03.1.bin

 

Далее в разделе меню "разработка" появился Qt Creator. Запустил, написал программку

 #include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
 QApplication app(argc, argv);

 QPushButton hello("Hello world!");

 hello.show();
 return app.exec();
}

Пытаюсь откомпилировать - не компилируется!...

Сообщения компилятора пока не могу сказать, т.к. переустанавливаю mandriva.

З.Ы. Устанавливаю все на Mandriva Linux 2009 Spring Free (http://mandriva.ru/downloads/downloads2/).

смотри пост выше, я там выдал причину. Надо доставить кучу библиотек и надо обезательно прописать в профеле юзера пути к к библиотекам и компилятору и cmake должен стоять

Так вот этот бин файлик нехрена сам ничего не прописывает и не устанавливает, только в нужную папочку распаковывается и ярлочки вывешивает, надо вручную прописать к в инструкции профиль и доставить библиотеки какие понадобится, это надо смотреть по выводу компилятора

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот что пишет компилятор:

Running build steps for project demo1...
Starting: /usr/bin/qmake /home/smirnoff/demo1/demo1.pro -spec /usr/lib/qt4/mkspecs/linux-g++ -r CONFIG+=debug_and_release CONFIG+=debug 
Exited with code 0.
Could not find make command: make in the build environment
Error while building project demo1
When executing build step 'Make'
Canceled build.

 

Что то с make?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Вот что пишет компилятор:

Running build steps for project demo1...
Starting: /usr/bin/qmake /home/smirnoff/demo1/demo1.pro -spec /usr/lib/qt4/mkspecs/linux-g++ -r CONFIG+=debug_and_release CONFIG+=debug 
Exited with code 0.
Could not find make command: make in the build environment
Error while building project demo1
When executing build step 'Make'
Canceled build.

 

Что то с make?

компилируется приложение спомощью qmake, а из объектников она собирается другой программой cmake - это компилятор (с++, такойже как gmake, imake или просто make или mingw под виндой)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
компилируется приложение спомощью qmake, а из объектников она собирается другой программой cmake - это компилятор (с++, такойже как gmake, imake или просто make или mingw под виндой)

 

Установил cmake. В консоли перехожу в директорию с файлом 1.cpp, выполняю

qmake -project -o 1.pro
qmake -makefile 1.pro
make

 

В результате появились файлы:

1.pro
Makefile
1
1.o

 

Что делать дальше? Как запустить?

 

Все что делал в терминале:

[smirnoff@localhost demo1]$ qmake -project -o 1.pro
[smirnoff@localhost demo1]$ qmake -makefile 1.pro
[smirnoff@localhost demo1]$ make
g++ -c -pipe -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include/QtGui -I/usr/lib/qt4/include -I. -I. -o 1.o 1.cpp
g++ -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -o 1 1.o	-L/usr/lib -lQtGui -L/usr/lib -pthread -lpng -lfreetype -lgobject-2.0 -lSM -lICE -pthread -pthread -lXrender -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
[smirnoff@localhost demo1]$

 

Спасибо, разобрался)) Туплю))

 

Выполнил

 

./1

 

 

Вопрос: как, разместив на форме кнопку Button1 (через Qt Designer), сделать так, чтобы приложение, при нажатии на кнопку, закрывалось?

ПОнимаю, что тупой вопрос, но все же, объясните, пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
компилируется приложение спомощью qmake, а из объектников она собирается другой программой cmake - это компилятор (с++, такойже как gmake, imake или просто make или mingw под виндой)

 

Установил cmake. В консоли перехожу в директорию с файлом 1.cpp, выполняю

qmake -project -o 1.pro
qmake -makefile 1.pro
make

 

В результате появились файлы:

1.pro
Makefile
1
1.o

 

Что делать дальше? Как запустить?

 

Все что делал в терминале:

[smirnoff@localhost demo1]$ qmake -project -o 1.pro
[smirnoff@localhost demo1]$ qmake -makefile 1.pro
[smirnoff@localhost demo1]$ make
g++ -c -pipe -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include/QtGui -I/usr/lib/qt4/include -I. -I. -o 1.o 1.cpp
g++ -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -o 1 1.o	-L/usr/lib -lQtGui -L/usr/lib -pthread -lpng -lfreetype -lgobject-2.0 -lSM -lICE -pthread -pthread -lXrender -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
[smirnoff@localhost demo1]$

 

Спасибо, разобрался)) Туплю))

 

Выполнил

 

./1

 

 

Вопрос: как, разместив на форме кнопку Button1 (через Qt Designer), сделать так, чтобы приложение, при нажатии на кнопку, закрывалось?

ПОнимаю, что тупой вопрос, но все же, объясните, пожалуйста.

надо связать события, это можно сделать в дезигнере там слева должна быть понель с событиями либо прописать вручную. Я люблю автокомпоновщик Qt и не пользуюсь дизигнером (но это дело вкуса), с помощью метода connect я связываю событие с функцией, прошу обратить внимание, так как сигнал адресован для данного класса в котором он написан, я пропускаю, указание this (что позволительно) и сразу вызываю метод. Вообще очень рекомендую Шелле очень конкретно все разбирает.

QObject::connect(button,SIGNAL(clicked()),SLOT(quit()));

Да забыл button - это ничто иное как при объявление *button, И соответственно базаво это было:

QPushButton *button;

.....

button= new QPushButton;

если же button - не копия объекта класса

QPushButton button;

то выглядело бы это так (сейчас впишу this, так просто хотся, если бы мы обращались к другому объекту не из этого класса мы бы должны были подставить ссылку на него)

QObject::connect(&button,SIGNAL(clicked()),this,SLOT(quit()));

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за столь развернутый ответ! Буду разбираться...

 

А можно ли откомпилировать так, чтобы написанная программа работала независимо от ОС? Наверное вряд ли, т.к. у каждой ОС свои особенности...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Спасибо за столь развернутый ответ! Буду разбираться...

 

А можно ли откомпилировать так, чтобы написанная программа работала независимо от ОС? Наверное вряд ли, т.к. у каждой ОС свои особенности...

Нельзя, можно указать компилятору в какой системе ему сделать линковщик, но вот у меня не разу не собралось под другой операционкой

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброго времени суток!

 

Подскажите, пожалуйста, как правильно деббагить средствами Qt Creator?

 

Написал программу (для примера):

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>

int main()
{
char s[20];

printf("Enter your string in length no more than\n20 characters and press enter: ");
scanf("%s", &s);
printf("\nString earlier entered by you: %s", s);
printf("\n\nPress any key...");
getch();

return 0;
}

 

Ставлю breakpoint на строку с scanf (хочу посмотреть как меняется переменная s после выполнения scanf).

Нажимаю F5.

Далее наблюдаем картину:

post-352379-1260276874_thumb.png

 

Вопрос: что нужно сделать чтобы появилось мое консольное окно, где я смогу ввести текст (чтобы scanf поместил его в s)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эм, что за лол, качаем qt-sdk она есть как под линь, так и под вин, версии друг от друга не отличаются, программируем в 1 проект, и спокойно переносим этот проект в другую платформу и там компилируем в той же среде, проверенно, все прекрасно работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Эм, что за лол, качаем qt-sdk она есть как под линь, так и под вин, версии друг от друга не отличаются, программируем в 1 проект, и спокойно переносим этот проект в другую платформу и там компилируем в той же среде, проверенно, все прекрасно работает

О переносе на другие платформы речи не идет. Я спросил как работать с debugger'ом!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Доброго времени суток!

 

Подскажите, пожалуйста, как правильно деббагить средствами Qt Creator?

 

Написал программу (для примера):

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>

int main()
{
char s[20];

printf("Enter your string in length no more than\n20 characters and press enter: ");
scanf("%s", &s);
printf("\nString earlier entered by you: %s", s);
printf("\n\nPress any key...");
getch();

return 0;
}

 

Ставлю breakpoint на строку с scanf (хочу посмотреть как меняется переменная s после выполнения scanf).

Нажимаю F5.

Далее наблюдаем картину:

post-352379-1260276874_thumb.png

 

Вопрос: что нужно сделать чтобы появилось мое консольное окно, где я смогу ввести текст (чтобы scanf поместил его в s)?

Оно не появится, обрати внимание Вкладку внизу Application output - когда ты запускаешь программу, не важно под дебагинг или просто - весь вывод идет туда. Но внимание засада сам напоролся, Qt не сильно дружит с выводом в консоль, у меня по крайней мере получилось после некоторого шаманство. В Qt лучше это делать средствами Qt

#include <QtCore/QCoreApplication>
#include <QTextStream>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextStream out(stdout);
QTextStream in(stdin);
QString	 str;

out<<"Hello world. Please tape anything and press enter"<<endl;
out.flush();//обязательно иначе не будет работать
in>>str;
out<<"Thank's, you  entered thise "<<str<<endl;
out.flush();//обязательно иначе не будет работать
return a.exec();
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

DeathStalker, смотрите, есть вкладка "Locals and Watchers", в которой присутствует наша переменная s (с поэлементным содержимым). В консоле ввел "777", но переменная s не поменяла своего занчения в дебагере!

 

post-352379-1260464377_thumb.png

Как добиться того, чтобы во вкладке "Locals and Watchers" переменные меняли свои значения??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
DeathStalker, смотрите, есть вкладка "Locals and Watchers", в которой присутствует наша переменная s (с поэлементным содержимым). В консоле ввел "777", но переменная s не поменяла своего занчения в дебагере!

 

post-352379-1260464377_thumb.png

Как добиться того, чтобы во вкладке "Locals and Watchers" переменные меняли свои значения??

Трабла именно со scanf почемуто gdb его не понимает и не получив ответа, повисает, вы заметили что у вас не видется вывод во вкладку Application Output -вся проблема именно в этом, тудаже и ввод происходит. Поэтому если хотите использовать дебагер видимо придется пользоваться стандартными средствами Qt как я описал выше

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ммм. Как же все не хорошо с этим Qt. Мне стоит еще раз подумать о его достоинствах... Наверно, все же, это не самое лучшее средство для разработки кроссплатформенного ПО.

 

Интересно, какие существуют реальные промышленные разработки на Qt?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ммм. Как же все не хорошо с этим Qt. Мне стоит еще раз подумать о его достоинствах... Наверно, все же, это не самое лучшее средство для разработки кроссплатформенного ПО.

 

Интересно, какие существуют реальные промышленные разработки на Qt?

Каждый выбирает по себе, на самом деле на сколько я понимаю - это проблема не Qt, а именно оболочки и gdb - на линухе я добился чтоб он нармольно дебагил - но я пересабрал много приложений. Предыдущие версии до 4-5, прекрасно дебагились, правда QDevelop - имеет свои недостатки, причем не маленькие. Поэтому предполагаю, что дело, все таки, в руках,а не в библиотеке. А насчет кросплатформенности, Вы пишите кот на с++, не используя библиотеку как токовую и какая вам разница этот код и так универсален. Qt предполагает, что перекомпиливав код ее библиотеки в любой системе вы получите рабочую программу. Поэтому если вы не используете мощь Qt,а пишите на c++ only - то нафига вам Qt действительно не ясно. Используйте gcc и будьте счастливы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да это так... Но я сейчас занимаюсь проблемами повышения эффективности кроссплатформенной разработке приложений. Поэтому считаю, что использование библиотек, таких как, например, Qt, явным образом позволяет повысить эффективность разработки кроссплатформенного ПО.

А в Qt используется объектный подход? Думаю, что да, т.к. Qt - оболочка языка С/С++, а С/С++ - использует объектный подход в виде классов. Это действительно так? Я верно размышляю?

 

Поэтому если вы не используете мощь Qt,а пишите на c++ only - то нафига вам Qt действительно не ясно. Используйте gcc и будьте счастливы!

 

Qt необходим как средство разработки GUI. Ведь на чистом С/С++ писать GUI очень долго и неэффективно с точки зрения экономии времени и сил программиста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да это так... Но я сейчас занимаюсь проблемами повышения эффективности кроссплатформенной разработке приложений. Поэтому считаю, что использование библиотек, таких как, например, Qt, явным образом позволяет повысить эффективность разработки кроссплатформенного ПО.

А в Qt используется объектный подход? Думаю, что да, т.к. Qt - оболочка языка С/С++, а С/С++ - использует объектный подход в виде классов. Это действительно так? Я верно размышляю?

 

Поэтому если вы не используете мощь Qt,а пишите на c++ only - то нафига вам Qt действительно не ясно. Используйте gcc и будьте счастливы!

 

Qt необходим как средство разработки GUI. Ведь на чистом С/С++ писать GUI очень долго и неэффективно с точки зрения экономии времени и сил программиста.

да Qt использует ооп, а своими сигналами оно его даже расширяет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Можно ли откомпилировать из под windows для linux?

Да, можно. Это называется кросс-компиляцией. Для этого необходимо использовать mingw32-make под Windows и собрать Qt с соответствующими флагами:

 

-xplatform <spec> .. The operating system and compiler you are cross

compiling to.

 

See the README file for a list of supported operating

systems and compilers.

Аргументом -xplatform, грубо говоря, может быть любой конфиг из папки %QTDIR%/mkspecs. Обычно, правда, его используют для сборки Qt для мобильных устройств (Embedded Linux и Windows CE, а сейчас ещё и Symbian). В случае компилирования просто под Linux будет примерно так:

configure ... -xplatform linux-g++

Правда, за аргумент ручаться не могу :lol:

 

--------------------------------------------------------------------------------

 

Про дебаг:

int i;

...

qDebug() << "message, iter:" << QString::number(i) << "messsage";

qDebug() << "second message";

И так далее. Подробнее тут: qCritical, qDebug, qFatal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Человек дебагит не Qt программу а обычную c++, и с этим возникает траблы - он действительно вешается на вводе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Хм, проглядел)

Тогда да, через QTextStream.

Под линухой я добился нормальной работы, но я прилично библиотек переустановил для этого

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Методом гугления было найдено решение, аналогичное приведённому выше (через QTextStream). Также было замечено, что у порядочного числа пользователей тоже не работает ввод :D

 

#include <QtCore/QCoreApplication>
#include <QTextStream>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QTextStream out(stdout);

out << "Hello World!\n";
out.flush();

QTextStream inp(stdin);
QString str = "";

out << "BBEDITE CTPOKY: ";
out.flush();
inp >> str;
out << "Bb| BBELI: " << str << endl;

return 0;
}

 

via Prog.org.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Windows gdb действительно отвратителен, в Linux благо всё гораздо радужней. Но вообще как вариант - писать в VisualStudio, а потом просто компилить куда требуется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В Windows gdb действительно отвратителен, в Linux благо всё гораздо радужней. Но вообще как вариант - писать в VisualStudio, а потом просто компилить куда требуется.

VS - это платная версия QT!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Господа! Подскажите, пожалуйста, как реализовать задуманную мною вещичку :-)

 

Я интегрировал Qt в MS Visual Studio 2008. В Qt Designer создал следующую форму:

 

post-352379-1264179575_thumb.jpg

 

Цель1: сделать так, чтобы по нажатии на кнопку pushButton (нижняя правая) (ObjectName pushButton_3) поле, в котором написано "апапавпвапвап" (ObjectName le) очистилось.

 

Соответственно написал код:

 

#include "designer.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
designer w;
QObject::connect(
	&pushButton_3,
	SIGNAL(clicked()),
	≤,
	SLOT(clear()));

w.show();
return a.exec();
}

 

Но не компилируется. Пишет, что:

1>.\main.cpp(9) : error C2065: pushButton_3: необъявленный идентификатор
1>.\main.cpp(11) : error C2065: le: необъявленный идентификатор

 

Вопрос: как объявить те элементы формы в коде, с которыми я хочу работать?

 

Цель2: сделать так, чтобы в поле, в котором написано "апапавпвапвап" (ObjectName le) по нажатии там на клавишу Enter на клавиатуре произошло что либо, например поменялся CurrentIndex у ComboBox'a (ObjectName chb).

Чтобы узнать тип события, имеется метод QEvent::type(). Но как это все реализовать программно?

 

Понимаю, что вопросы из ряда легких, но для меня, как для начинающего осваивать Qt этот вопрос увы не легок. Помогите разобраться...

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах