Извиняюсь что еще раз беспокою!
Может всётаки мне ктонибудь приоткроет тайну: что нужно сделать чтобы можно было писать вот так:
...
QString str = "Damned QT!!!";
qDebug() << str; // вот так хочется
qDebug(str); // или так
...
// пока только так приходится писать
qDebug(str.toStdString().c_str());
P.S. Еще раз повторю: очень жаль что на выяснение такие простые вещи приходится тратить столько времени! Библиотека НЕ должна быть так устроена!
//UTF-8 (w/o BOM)
#include <QtGui>
int main(int argc, char** argv)
{
QString locale; // язык локали
QTranslator *apptr; // переводчики бибилиотеки и программы
QApplication app(argc, argv);
// Кодек для tr() / Codec for tr()
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
// Устанавливаем превод программы
locale = "en"/*QLocale::system().name()*/; // запрос языка (например: "ru")
qDebug() << "locale is " << locale;
apptr = new QTranslator;
apptr->load(QString("app_") + locale); // загрузка файла qt_*.qm
qApp->installTranslator(apptr); // установка переводчика
qDebug() << apptr;
// Метка / Label
QLabel lbl(QObject::tr("Test-Привет-Test"));
// Отобразить / Show
lbl.show();
return app.exec();
}
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
SOURCES += main.cpp
#======== Translation ===============
TRANSLATIONS = app_en.ts
CODECFORTR = UTF-8
CONFIG (debug, debug|release) {
CONFIG += console
}
smooky, про регулярки тему создавай отдельно, эта тема называется :
qDebug() << QString (еще раз плиз)
когда человек будет искать про регулярки, у него не будет асоциаций с этой темой.
smooky, скажи еще версию Qt, лучше так посмотреть:
qmake -v
Русский текст в Qt можно ещё сделать так:
1. Работает для GUI приложений.
Начинает отображаться русский текст, загружаемый из текстовыйх файлов с кодировкой ANSI,
а также введённый в программе руский текств QPlainText успешно сохраняется в файл (через QFile) в кодировке ANSI.
// Вызвать в любом месте (можно даже в main-функции).
QTextCodec *codec = QTextCodec::codecForName("cp1251");
QTextCodec::setCodecForCStrings(codec);
// После этого загружается и отображается русский текст
// как в GUI так и в сохраняемых текстовых файлах (ANSI)
#include <QtGui>
void myMessageOutput(QtMsgType type, const char *msg)
{
QTextCodec *outCodec = QTextCodec::codecForName("IBM866");
switch (type) {
case QtDebugMsg:{
QTextStream err(stderr);
err.setCodec(outCodec);
err << QString(msg) << endl;
//fprintf(stderr, "Debug: %s\n", msg);
break;
}case QtWarningMsg:
fprintf(stderr, "Warning: %s\n", msg);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s\n", msg);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s\n", msg);
abort();
}
}
int main(int argc, char *argv[])
{
qInstallMsgHandler(myMessageOutput);
QApplication app(argc, argv);
...
qDebug() << QObject::trUtf8("Этот текст будет в на русском");
хоть перевод его меня и не интерисует. Можно использовать функции QTextCodec.
#include <QDebug>
Приветствую, вот есть такое :
#include <QDebug>
код программы...
qDebug() << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";
код программы...
и сразу вылезают такие ошибки
n file included from c:\Qt\2010.05\qt\include/QtCore/../../src/corelib/tools/qlist.h:50,
from c:\Qt\2010.05\qt\include/QtCore/qlist.h:1,
from c:\Qt\2010.05\qt\include/QtCore/../../src/corelib/tools/qhash.h:48,
from c:\Qt\2010.05\qt\include/QtCore/qhash.h:1,
from c:\Qt\2010.05\qt\include\QtCore/../../src/corelib/io/qdebug.h:46,
from c:\Qt\2010.05\qt\include\QtCore/qdebug.h:1,
from c:\Qt\2010.05\qt\include\QtCore/QDebug:1,
from dos_phys.cpp:16:
c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator:74: error: 'std::input_iterator_tag' has not been declared
c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator: In function 'void __gnu_cxx::__distance(_RandomAccessIterator, _RandomAccessIterator, _Distance&, std::random_access_iterator_tag)':
c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator:87: error: '<anonymous>' has incomplete type
c:\Qt\2010.05\qt\include/QtCore/../../src/corelib/tools/qiterator.h:51: error: forward declaration of 'struct std::random_access_iterator_tag'
c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator: In function 'void __gnu_cxx::distance(_InputIterator, _InputIterator, _Distance&)':
c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator:107: error: '__iterator_category' is not a member of 'std'
#include <QtDebug>
да в том и дело что QtDebug or Qdebug одна и таже ошибка!
не хочет он её
TiiL, делай мнимальный пример, например:
#include <QDebug>
int main(int argc, char** argv)
{
qDebug() << "test";
}
И смотри будет компилироваться или нет.
разобрался.
#include <string>
и ошибки исчезли.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)