Hallo,
ich will einen QString als Element an ein QListwidget anhängen.
Der String enthält Zeilenumbrüche, was bei QListwidget dazu führt, dass der Eintrag ebenfalls in Umgebrochener Form erscheint (als ein zusammenhängendes Element).
Die Eigenschaften "Wordwrap" und "isWrapping" sind beide "false".
Gibt es eine Möglichkeit, den String in einer Zeile darzustellen?
QListWidget und Wordwrap/Zeilenumbruch
Hallo,
ersetz vor dem einfügen des QString doch alle Zeilenumbrüche mit Leerzeichen.
MfG RD1978
ersetz vor dem einfügen des QString doch alle Zeilenumbrüche mit Leerzeichen.
Code: Alles auswählen
deinString.replace( "\n", " " );Hallo,
also wegen der Plattformunabhängigkeit würde ich dann Konstanten anlegen.
MfG RD1978
also wegen der Plattformunabhängigkeit würde ich dann Konstanten anlegen.
Code: Alles auswählen
//Beispiel
#ifdef Q_OS_LINUX
#define NEW_LINE "\n"
#elif defined Q_OS_WIN32
#define NEW_LINE "\r\n"
#else
#error "Nichts definiert" // Kompiliervorgang abbrechen
#endif
// und dann halt einsetzen
deinString.replace( NEW_LINE, " " );Dann sind custom delegates bzw. Model/View die Stichworte.Antis_81 hat geschrieben:Der String soll möglichst nicht verändert werden, sondern halt nur die Ausgabe.
Übersetze mal folgendes Programm. Die erste Spalte ist edittierbar, hier kannst du Zeilenumbrüche mit "\n" eingeben, die zweite Spalte zeigt dann den Text ohne Umbruch an.
Code: Alles auswählen
#include <QtGui>
class MyModel : public QAbstractTableModel
{
public:
MyModel ( const QStringList &input, QObject * parent = 0 ) : QAbstractTableModel(parent)
{
m_strings = input;
}
QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const
{
if (role == Qt::DisplayRole || role == Qt::EditRole )
{
if (index.column() == 0)
return m_strings.at(index.row() );
else
{
QString res = m_strings.at(index.row());
return res.replace(QRegExp("\\n"), "\\n");
}
}
return QVariant();
}
int rowCount( const QModelIndex & )const
{
return m_strings.count();
}
int columnCount( const QModelIndex & ) const
{
return 2;
}
Qt::ItemFlags flags ( const QModelIndex & index ) const
{
if (index.column() == 1)
return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
else
return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable;
}
bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )
{
QString res(value.toString());
res.replace("\\n", "\n");
m_strings.replace(index.row(), res);
return true;
}
private:
QStringList m_strings;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStringList startStrings;
startStrings << "Hallo \n ich bin zweizeilig" << "Ich nicht";
MyModel *myMod = new MyModel(startStrings);
QTableView *tv = new QTableView;
tv->setModel(myMod);
tv->show();
return app.exec();
}