Вопрос

message.text () - это QString.

Я хочу удалить какой-нибудь текст.

Текст может быть:

  1. Обычный: "This is a text"
  2. С этикеткой: "<label1>something</label1>This is a text"

Во-первых, я нахожу, если у текста есть метка:

!message.Text().contains("<label1>", Qt::CaseInsensitive))

Итак, если у него есть, я хочу удалить первую часть, иметь обычный текст «Это текст».

Я попробовал это:

first=message.Text().indexOf("<label1>");
last=message.Text().lastIndexOf("</label1>");
message.Text().remove(first,last);

Но я получил ошибку компилятора C2663.

Я также знаю, что message.Text().remove(QChar('<label1'), Qt::CaseInsensitive); это еще один способ сделать это. Но в моем случае часть между этикеткой не работает.

Это может быть <label1>something</label1> или <label1>oisdioadj</label> или <label1>7</label1>....

Есть идеи?

С уважением.

Это было полезно?

Решение

Попробуйте следующее:

#include <iostream>
using std::cout; using std::endl;
#include <QString>

int main()
{
  QString message = "<label1>something</label1>This is a test";
  const QString labelClose = "</label1>";
  const int labelCloseSize = labelClose.size();

  cout << "message: " << qPrintable(message) << endl;

  const int closePosition = message.lastIndexOf(labelClose);
  QString justText = message.remove(0, closePosition + labelCloseSize);
  cout << "just text: " << qPrintable(justText) << endl;
}

Другие советы

Мой совет здесь: Держите вещи простыми в вашем коде, это поможет сделать все возможное в вашей голове.

Кажется, что вы хотите достичь, это больше связано с строками, чем на этикетку.

Я предлагаю вам получить текст с вашей этикетки, а затем работать над ним самостоятельно, а затем связывайте его обратно на свою этикетку:

QString text = message.text();

/* Do whatever you need to do here with text */

message.setText(text);

Кроме того, ошибка, которую вы имеете, вероятно, связаны с тем, что вы пытаетесь изменять напрямую сообщение. Text (), который является конститут Ссылка: очевидно, вы не можете изменить то, что есть const.

Я верю, что вы пытаетесь достичь, можно сделать, используя QString :: Заменить (). Отказ Вам придется использовать регулярные выражения для этого, поэтому, если вы не знакомы с этим, это может быть сложно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top