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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: копировать в буфер  (Прочитано 14901 раз)
almareta
Гость
« : Сентябрь 10, 2010, 10:12 »

Имеется таблица из БД, выведена в форму.
Нужно реализовать следующее:
Выделяешь строку нужную, нажимаешь на кнопку(или f2), строка копируется в буфер обмена.
Для удобства есть вылезающая форма, она указывает на то, что строка скопирована...или впринципе и без этого можно обойтись, просто отобразив в статус баре то же самое("строка скопирована").
Мысли и идеи приветствуются, возможно уже есть какие-то решения, на форуме не нашла.Заранее спасибо
Записан
Sancho_s_rancho
Гость
« Ответ #1 : Сентябрь 10, 2010, 10:35 »

Имеется таблица из БД, выведена в форму.
Нужно реализовать следующее:
Выделяешь строку нужную, нажимаешь на кнопку(или f2), строка копируется в буфер обмена.
Для удобства есть вылезающая форма, она указывает на то, что строка скопирована...или впринципе и без этого можно обойтись, просто отобразив в статус баре то же самое("строка скопирована").
Мысли и идеи приветствуются, возможно уже есть какие-то решения, на форуме не нашла.Заранее спасибо
А что не так с QClipboard?
Записан
almareta
Гость
« Ответ #2 : Сентябрь 10, 2010, 10:56 »

на него нашла только пример
Код:
#include <qapplication.h>
#include <qclipboard.h>

int main( int argc, char **argv )
{
    QApplication a( argc, argv );
    qDebug(QApplication::clipboard()->text());
    QApplication::clipboard()->setText("aaa");
    return 0;
}

только без описания
Записан
noirhor
Гость
« Ответ #3 : Сентябрь 10, 2010, 16:54 »

QApplication::clipboard()->text();
QApplication::clipboard()->setText("aaa");

Ну вот.  Первое возвращает текст из буфера, второе заносит в буфер.
Создаете слот, например:
Код:
public slots:
    void slotClipText()
    {
        QString str = <Ваша строка>;
        QApplication::clipboard()->setText(str);
        statusBar()->addWidget(new QLabel("Строка скопирована"));
    }


Потом коннектимся:
Код:
<Ваша кнопка> -> setShortcut(Qt::Key_F2);
connect(<Ваша кнопка>, SIGNAL(clicked()), SLOT(slotClipText()));

или без кнопки:
Код:
QAction *action = new QAction(0);
action->setShortcut(Qt::Key_F2);
<Ваш виджет> -> addAction(action);
connect(action, SIGNAL(triggered()), SLOT(slotClipText()));
Записан
almareta
Гость
« Ответ #4 : Сентябрь 13, 2010, 08:14 »

Спасибо буду пробовать, но чувствую вопросов будет много ))
Записан
almareta
Гость
« Ответ #5 : Сентябрь 13, 2010, 08:22 »

Цитировать
QString str = <Ваша строка>;

как определить, что строка выделена?
Записан
Karl-Philipp
Гость
« Ответ #6 : Сентябрь 13, 2010, 08:38 »

Цитировать
QString str = <Ваша строка>;

как определить, что строка выделена?
Похоже, что вам нужен QLineEdit. Улыбающийся
Записан
almareta
Гость
« Ответ #7 : Сентябрь 13, 2010, 08:47 »

Цитировать
QString str = <Ваша строка>;

как определить, что строка выделена?
Похоже, что вам нужен QLineEdit. Улыбающийся

можно спросить, для каких целей, что я буду там отображать? )
Записан
Karl-Philipp
Гость
« Ответ #8 : Сентябрь 13, 2010, 09:31 »

Цитировать
QString str = <Ваша строка>;

как определить, что строка выделена?
Похоже, что вам нужен QLineEdit. Улыбающийся

можно спросить, для каких целей, что я буду там отображать? )
Что вы подразумеваете под "как определить, что строка выделена?"? Улыбающийся
Записан
almareta
Гость
« Ответ #9 : Сентябрь 13, 2010, 09:38 »

Цитировать
QString str = <Ваша строка>

<Ваша строчка> сюда как я понимаю надо записывать выделенную строку моей таблицы, так как программа будет определять выделена строка или нет?
Записан
Karl-Philipp
Гость
« Ответ #10 : Сентябрь 13, 2010, 10:12 »

Цитировать
QString str = <Ваша строка>

<Ваша строчка> сюда как я понимаю надо записывать выделенную строку моей таблицы, так как программа будет определять выделена строка или нет?

1) получаем текущий индекс:
Цитировать
QModelIndex QAbstractItemView::currentIndex () const
2) узнаем номер строчки:
Цитировать
int QModelIndex::row () const
Записан
almareta
Гость
« Ответ #11 : Сентябрь 13, 2010, 10:41 »

мне вот даже интересно, как это собрать воедино ))
Код:
 
QStatusBar *statusBar = new QStatusBar(); // создала статусбар
int QModelIndex::row() const //узнала номер строки
QString str = ?
QApplication::clipboard()->setText(str); //занесли в буфер
statusBar->addWidget(new QLabel("Строка скопирована")); //строка состояние

так я понимаю?
Записан
Kolobok
Гость
« Ответ #12 : Сентябрь 13, 2010, 11:10 »

Код:
QModelIndex current = view->currentIndex();
if( index.isValid() )
{
  QString str = index.data();
  QApplication::clipboard()->setText( str );
  statusBar()->showMessage( str );
}

Каждый раз создавать QStatusBar не нужно. И желательно прочитать раздел Model/View programming.
Записан
almareta
Гость
« Ответ #13 : Сентябрь 13, 2010, 12:05 »

Код:
QModelIndex current = view->currentIndex();
if( index.isValid() )
{
  QString str = index.data();
  QApplication::clipboard()->setText( str );
  statusBar()->showMessage( str );
}

Каждый раз создавать QStatusBar не нужно. И желательно прочитать раздел Model/View programming.

...но на него он ругается и не только на него...

/home/gorans/QTProjects/bankcards_10_09/task_filter.cpp:13: error: ‘view’ was not declared in this scope
/home/gorans/QTProjects/bankcards_10_09/task_filter.cpp:14: error: ‘index’ does not have class type
/home/gorans/QTProjects/bankcards_10_09/task_filter.cpp:16: error: ‘index’ does not have class type
/home/gorans/QTProjects/bankcards_10_09/task_filter.cpp:18: error: ‘statusBar’ was not declared in this scope
/home/gorans/QTProjects/bankcards_10_09/task_filter.cpp:13: warning: unused variable ‘current’
Записан
almareta
Гость
« Ответ #14 : Сентябрь 13, 2010, 12:30 »

И можно ссылку на Model/View programming пожалуйста...
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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