Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pahom от Июнь 14, 2007, 14:35



Название: QTextEdit замена символов в строке.
Отправлено: pahom от Июнь 14, 2007, 14:35
Доброе время суток.

(openSUSE 10.2;  QT4.2.1)

Необходимо преобразовать мак адреса из вида XX:XX:XX:XX:XX:XX в вид XXXX.XXXX.XXXX. Один мак - одна строка в QTextEdit.

Собственно вопрос: "как можно обратиться к строке, допустим [3] в QTextEdit и считать от туда,допустим, символ 3."

p.s. Не хочется реализовывать это с помощью QTextCursor. Уверен, что есть изящный выход.
p.s.s. И в то же время реализация должна быть переносима на другие платформы. То есть, только с использованием библиотек QT4

С уважением, Михаил.


Название: QTextEdit замена символов в строке.
Отправлено: SABROG от Июнь 14, 2007, 16:07
текст в QTextEdit с html тэгами ?

Если нет, то можно сначала текст получить:

QString myString = myTextEdit.text();

потом преобразовать QString в QStringList, разделителями будут переводы кареток:

QStringList sList = myString.split(QLatin1String("\n")); // или \n\r

тут надо учесть, что для unix систем переводом строки является всего один символ - \n (перевод каретки), а для windows два - \n\r (перевод каретки, возврат каретки на первый символ в строки). Поэтому если написать разделитель только "\n", то в конце каждой строки будет символ "\r" если это в винде.

Все, дальше достукиваешься к каждой строке через индекс sList.at(3), количество строку sList.size().

Делаешь нужные преобразования, потом:

myTextEdit.setText(sList.join("\n"));


Название: QTextEdit замена символов в строке.
Отправлено: pahom от Июнь 14, 2007, 16:55
Код:

#include "dialogimpl.h"
//
_conv::_conv( QWidget * parent, Qt::WFlags f)
: QDialog(parent, f)
{
setupUi(this);
connect(conv,SIGNAL(clicked()),this,SLOT(conff()));
}
//
void _conv::conff()
{
QString str=t_in.text(); //error
}


src/dialogimp.cpp:12: error: request for member 'text' in'((_conv^)this)->_conv::<anonymous>.Ui::Dialog::<anonymous>.Ui_Dialog::t_in', which is of non-class type QTextEdit^'
Я только перехожу на QT может где то что то не объявил?


Название: QTextEdit замена символов в строке.
Отправлено: pastor от Июнь 14, 2007, 17:00
Цитата: "pahom"
Код:

QString str=t_in.text(); //error



Пробуй так:
Код:
QString str=t_in->toPlainText()


1) t_in - это указатель
2) метода text() у QTextEdit нет


Название: QTextEdit замена символов в строке.
Отправлено: SABROG от Июнь 14, 2007, 17:18
Странный этот Assistant, в самом низу описания QTextEdit есть:

Цитировать

QString QTextEdit::text () const
Returns all the text in the text edit as plain text.
See also setText().


А метод toPlainText(), я так понимаю, появился с 4.3


Название: QTextEdit замена символов в строке.
Отправлено: pastor от Июнь 14, 2007, 17:22
Цитата: "SABROG"

А метод toPlainText(), я так понимаю, появился с 4.3


Этот метод есть и в 4.2.х


Название: QTextEdit замена символов в строке.
Отправлено: SABROG от Июнь 14, 2007, 17:25
Ну значит toPlainText() и поменять точку на указатель (->)


Название: QTextEdit замена символов в строке.
Отправлено: pastor от Июнь 14, 2007, 17:29
Цитата: "SABROG"
Странный этот Assistant, в самом низу описания


Это часть QT3_SUPPORT


Название: QTextEdit замена символов в строке.
Отправлено: pahom от Июнь 15, 2007, 05:08
to pastor and SABROG:
Спасибо ребята, буду в ваших краях, обязательно налью 8)
С наилучшеми пожеланиями, Михаил.

добавлено спустя 11 часов:

 Ребята, а еще подскажите пожалуйста, как преобразовать тип int в QString?
Код:

int c=123;
QLabel sss->setText(c); //.toString() нет.

С уважением.


Название: QTextEdit замена символов в строке.
Отправлено: Steven_Orko от Июнь 15, 2007, 09:02
QString str = QString::number(int)


Название: QTextEdit замена символов в строке.
Отправлено: pastor от Июнь 15, 2007, 09:18
Непонятна вот эта строка: как-то не правильно ты объявил sss

Код:
QLabel sss->setText(c);


Здесь компилятор выдаст ошибку


Название: QTextEdit замена символов в строке.
Отправлено: pahom от Июнь 15, 2007, 09:29
Цитата: "pastor"
...Здесь компилятор выдаст ошибку

Да, верно, это я упростил, для наглядности. 8) В общем, решил я это все через sss->setNum(int a); где sss QLabel. Только меня интересует не это, а преобразование типов. Например строку в число, (конечно если там только цифры) char в QString и так далее.
Спасибо, еще раз 8)

добавлено спустя 1 минуту:

 to Steven_Orko спасибо, прикрасный пример 8)


Название: QTextEdit замена символов в строке.
Отправлено: SABROG от Июнь 15, 2007, 09:35
Цитировать

Например строку в число, (конечно если там только цифры) char в QString и так далее.


Код:

QString qsNumber("9");
int intNumber = qsNumber.toInt();
unsigned int uintNumber = qsNumber.toUInt();
float flNumber = qsNumber.toFloat();
double dblNumber = qsNumber.toDouble();


Код:

unsigned char text[] = "Hello, world";
...
QString qsText(text);
...
QString qsText = QString::fromAscii(text);
...
QString qsText = QString::fromLocal8Bit(text);


Assistant открой, там все есть...