Russian Qt Forum
Май 17, 2024, 07:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit замена символов в строке.  (Прочитано 13438 раз)
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

С уважением, Михаил.
Записан
SABROG
Гость
« Ответ #1 : Июнь 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"));
Записан
pahom
Гость
« Ответ #2 : Июнь 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 может где то что то не объявил?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Июнь 14, 2007, 17:00 »

Цитата: "pahom"
Код:

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



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


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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SABROG
Гость
« Ответ #4 : Июнь 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
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июнь 14, 2007, 17:22 »

Цитата: "SABROG"

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


Этот метод есть и в 4.2.х
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SABROG
Гость
« Ответ #6 : Июнь 14, 2007, 17:25 »

Ну значит toPlainText() и поменять точку на указатель (->)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #7 : Июнь 14, 2007, 17:29 »

Цитата: "SABROG"
Странный этот Assistant, в самом низу описания


Это часть QT3_SUPPORT
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pahom
Гость
« Ответ #8 : Июнь 15, 2007, 05:08 »

to pastor and SABROG:
Спасибо ребята, буду в ваших краях, обязательно налью Крутой
С наилучшеми пожеланиями, Михаил.

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

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

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

С уважением.
Записан
Steven_Orko
Гость
« Ответ #9 : Июнь 15, 2007, 09:02 »

QString str = QString::number(int)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Июнь 15, 2007, 09:18 »

Непонятна вот эта строка: как-то не правильно ты объявил sss

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


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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pahom
Гость
« Ответ #11 : Июнь 15, 2007, 09:29 »

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

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

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

 to Steven_Orko спасибо, прикрасный пример Крутой
Записан
SABROG
Гость
« Ответ #12 : Июнь 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 открой, там все есть...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 19.