crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Дополнительный текст в QLineEdit
RazrFalcon
  опции профиля:
сообщение 26.11.2011, 1:28
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Пример:


Причем редактироваться может только путь. Количество файлов должно быть не редактируемым и не выделяемым.
Можно лейбл поверх QLineEdit сделать. Но тогда нужно сдвигать сам текст в QLineEdit. Это я тоже не знаю как сделать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Snake174
  опции профиля:
сообщение 26.11.2011, 6:30
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 18.4.2011
Из: Миасс
Пользователь №: 2613

Спасибо сказали: 9 раз(а)




Репутация:   0  


Попробуй что-то типа этого:
QLineEdit *path = new QLineEdit( this );
path->setObjectName("path");

QLabel *files = new QLabel( path );
files->setObjectName("files");
files->setStyleSheet("QLabel#files { border: none; padding: 1px; background-color: rgba(255, 255, 255, 0); }");

path->setStyleSheet( QString("QLineEdit#path { padding-left: %1px; }").arg( files->width() ) );


При изменении надписи files надо будет опять делать path->setStyleSheet( QString("QLineEdit#path { padding-left: %1px; }").arg( files->width() ) );

Код не проверялся.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 26.11.2011, 17:15
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Большое спасибо. То что нужно.
Вот как у меня в итоге вышло:

#include "lineedit.h"

LineEdit::LineEdit(QWidget *parent) :
    QLineEdit(parent),
    lbl(new QLabel(this))
{
    this->setObjectName("path");

    lbl->setObjectName("files");
    lbl->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
    lbl->setStyleSheet("QLabel#files { border: none; padding: 4px; padding-left: 1px;"
                       "background-color: rgba(255, 255, 255, 0); color: #808080; }");
}

LineEdit::~LineEdit()
{
    delete lbl;
}

void LineEdit::setValue(const int &value)
{
    lbl->setText(QString("%1 files in").arg(value));
    setStyleSheet(QString("padding-left: %1px;").arg(lbl->fontMetrics().width(lbl->text())+5));
}
lineedit.h
#ifndef LINEEDIT_H
#define LINEEDIT_H

#include <QLineEdit>
#include <QLabel>

class LineEdit : public QLineEdit
{
    Q_OBJECT

public:
    explicit LineEdit(QWidget *parent = 0);
    ~LineEdit();

private:
    QLabel *lbl;

public slots:
    void setValue(const int &value);
};

#endif // LINEEDIT_H


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 0:26