Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Програмирование платформенно-независимых систем > Trolltech Qt
Перезагрузить страницу перенос строки по двойному клику из одного tableview в другой
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 10.02.2015, 18:35

слот забыл показать
cpp Код:
void Sozdinie_Rashodnoi_Nakladnoi::Copy_pozihion()
 
{
ui->tableView->currentIndex();//вот так мы можем посмотреть где находимся
test_model.setData(test_model.index(0,0),main_model.data(ui->tableView->currentIndex()));
ui->tableView_2->setModel(&test_model);
}
Ответить с цитированием
  (#17 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,448
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 10.02.2015, 20:36

Получите нормально отображающиеся данные в View.
Сделайте слот Copy_pozihion() с нормальным параметром, а не void.
Ответить с цитированием
Пользователь сказал cпасибо:
Lexflax (14.02.2015)
  (#18 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 14.02.2015, 19:07

Доброго времени суток.
Я все так же не могу решить вопросы с передачи строки из одного tableview в другой по нажатию двойного клика на строке.

cpp Код:
#include "sozdinie_rashodnoi_nakladnoi.h"
#include "ui_sozdinie_rashodnoi_nakladnoi.h"
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QDebug>
Sozdinie_Rashodnoi_Nakladnoi::Sozdinie_Rashodnoi_Nakladnoi(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Sozdinie_Rashodnoi_Nakladnoi)
{
    ui->setupUi(this);
    QSqlQueryModel *nomenclatura = new QSqlQueryModel;
    QSqlQuery query;
    query.exec("SELECT * FROM nomenklatura");
    nomenclatura->setQuery(query);
    ui->tableView->setModel(nomenclatura);

    connect(this->ui->tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(Copy_pozihion(QModelIndex)));
}

Sozdinie_Rashodnoi_Nakladnoi::~Sozdinie_Rashodnoi_Nakladnoi()
{
    delete ui;
}

QWidget *Sozdinie_Rashodnoi_Nakladnoi::widget()
{
    return this;
}

QString Sozdinie_Rashodnoi_Nakladnoi::windowTitle() const
{
    return QWidget::windowTitle();
}

void Sozdinie_Rashodnoi_Nakladnoi::Copy_pozihion(const QModelIndex &index)

{
QVariant v = this->ui->tableView->model()->data(index, Qt::DisplayRole);
ui->tableView_2->model()->setData(index,v);
}

Пытаюсь так во второй tableview передать значение из переменной v, но программа неожиданно завершается на строчке

cpp Код:
ui->tableView_2->model()->setData(index,v);

cpp Код:
void Sozdinie_Rashodnoi_Nakladnoi::Copy_pozihion(const QModelIndex &index)

{
QVariant v = this->ui->tableView->model()->data(index, Qt::DisplayRole);
ui->tableView_2->model()->setData(index,v);
}

Я пока не могу до конца понять как правильно все сделать, от сайта к сайту перехожу в поисках разных примерах но точного примера пока не могу найти прям как для меня, подскажите почему вылетает программа?
Ответить с цитированием
  (#19 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,448
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 14.02.2015, 21:37

cpp Код:
QVariant v = this->ui->tableView->model()->data(index, Qt::DisplayRole);
- считывается значение ячейки, по которой был двойной клик.

cpp Код:
ui->tableView_2->model()->setData(index,v);
здесь должен быть другой индекс, корректный для этой модели, поэтому вылетает.
Ответить с цитированием
Пользователь сказал cпасибо:
Lexflax (15.02.2015)
  (#20 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 15.02.2015, 09:26

Простите за глупый вопросы, а какой корректный будет? и как его получить?
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,448
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 15.02.2015, 09:54

QAbstractItemModel Class Reference | Documentation | Qt Project
QAbstractItemModel Class | Qt Core 5.4
Ответить с цитированием
  (#22 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 15.02.2015, 15:03

я встречал эту документацию, но не понимаю ее...
Ответить с цитированием
  (#23 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,448
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 15.02.2015, 15:15

Ну, это печально, конечно. И что?...

Для добавления новой строки надо добавить эту строку в модель.
Потом получить новый индекс методом index() модели. По нему вставить данные в строку.
Model/View Tutorial | Documentation | Qt Project
Qt5 Tutorial ModelView with QListView and QStringListModel - 2015

QSqlQueryModel предназначен только для чтения. Для записи есть QSqlTableModel.
Пример работы: Insert new rows into database using QSqlTableModel | Qt Project forums | Qt Project
Ответить с цитированием
  (#24 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 18.02.2015, 16:21

Доброго времени суток.
По пример собрал следующий код
cpp Код:
#include "sozdinie_rashodnoi_nakladnoi.h"
#include "ui_sozdinie_rashodnoi_nakladnoi.h"
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QDebug>
#include <QSqlRecord>
Sozdinie_Rashodnoi_Nakladnoi::Sozdinie_Rashodnoi_Nakladnoi(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Sozdinie_Rashodnoi_Nakladnoi)
{
    ui->setupUi(this);
    nomenclatura = new QSqlQueryModel();
    QSqlQuery query;
    query.exec("SELECT * FROM nomenklatura");
    nomenclatura->setQuery(query);
    ui->tableView->setModel(nomenclatura);

    model_2 = new QStringListModel(  );
    ui->tableView_2->setModel( model_2 );

    connect( ui->tableView, &QTableView::doubleClicked,
             this, &Sozdinie_Rashodnoi_Nakladnoi::Copy_pozihion );

}

Sozdinie_Rashodnoi_Nakladnoi::~Sozdinie_Rashodnoi_Nakladnoi()
{
    delete ui;
}

QWidget *Sozdinie_Rashodnoi_Nakladnoi::widget()
{
    return this;
}

QString Sozdinie_Rashodnoi_Nakladnoi::windowTitle() const
{
    return QWidget::windowTitle();
}

void Sozdinie_Rashodnoi_Nakladnoi::Copy_pozihion(QModelIndex idx)

{
    if( !idx.isValid() ) return;

    QStringList strings = model_2->stringList();

    QSqlRecord rec = nomenclatura->record( idx.row() );
    strings.append( QString( "%1, %2" ).arg( rec.value("name_pozicii").toString() )
                                       .arg( rec.value("proizvoditel ").toString() ) );
    this->model_2->setStringList( strings );


};
Теперь при двойном клике информация из строчки определенного столбца копируется... Но как в данном примере оба столбца при копировании помещаются в один... а нужно чтоб в 2 разных стобца... Подскажите пожалуйста как можно это подправить?
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,448
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 18.02.2015, 18:40


QStringListModel не имеет никакого отношения к вашей задаче.
Нужно использовать QSqlTableModel по назначению.
В Skype добавтесь.

Последний раз редактировалось Rius; 19.02.2015 в 18:37
Ответить с цитированием
  (#26 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 22.02.2015, 16:26

Доброго времени суток.
Как вас найти в скайпе? по нику вашему много очень людей выдает...
Ответить с цитированием
  (#27 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,448
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 22.02.2015, 16:31

Уже вроде нашли, riuson логин
Ответить с цитированием
  (#28 (permalink)) Старый
Lexflax Lexflax вне форума
Member
 
Сообщений: 92
Сказал(а) спасибо: 35
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2011
По умолчанию 22.02.2015, 16:39

Ваше имя Владимир? если только что нажал добавить.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение сигнала после выбора строки в tableview Lexflax Trolltech Qt 63 27.01.2015 17:49
Перенос ОС с одного жесткого диска на другой pijon39 Операционная система Windows 6 02.09.2013 09:48
С :запись из одного файла в другой только часть строки alfa88 Вопросы начинающих программистов 1 08.07.2013 09:39
Перенос БД MySQL на другой компьютер Montysson MySQL 0 12.06.2012 16:43
как переместить память с одного диска на другой! kam Память 12 07.11.2011 19:00
Перенос программы на другой компьютер Studentka11 Delphi 6 09.06.2011 10:57
Строки. Добавление части строки внутрь другой frikorsar Prolog 2 21.01.2009 19:58
Interbase перенос БД на другой компьютер и работа с датами DIMM20 Другие СУБД 2 11.05.2006 15:23
Как значение из одного типа перевести в другой simmm C++ Builder 5 28.10.2005 07:00
Перенос реализации предикатов из одного модуля в другой imported_MasterX Prolog 1 29.05.2005 14:09
Работа с базами данных как сделать что бы по двойному клику открывался файл Gold_Dreamer Delphi 2 23.09.2004 22:37
Как послать сообщения из одного класса в другой в С++ Anonymous Visual C++ 1 12.08.2002 14:20



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов