0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 39
1

QTableWidget

17.11.2014, 16:50. Показов 1281. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть стандартная таблица 3х3 , при выделение двух ячеек они обмениваются содержимым,таблицу построил, но вот слот не могу правильно реализовать,есть наработки исходник ниже, помогите по возможности
dialog.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtGui>
namespace Ui {
class Dialog;
}
 
class Dialog : public QDialog
{
    Q_OBJECT
 
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    QTableWidgetItem *item;
    QStringList lst;
 
    int n;
 
private:
    Ui::Dialog *ui;
public slots:
    void onTableWidgetClicked(int col,int row);
};
 
#endif // DIALOG_H
dialog.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "dialog.h"
#include "ui_dialog.h"
int k = 0, l = 0;
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
       ui->setupUi(this);
       n = 3;
       lst << "First" << "Second" <<"Third";
       ui->tableWidget->setHorizontalHeaderLabels(lst);
       ui->tableWidget->setVerticalHeaderLabels(lst);
       for (int i  = 0; i < n; ++i) {
           for (int j = 0; j < n; ++j) {
               item = new QTableWidgetItem(QString("%1,%2").arg(i).arg(j));
               ui->tableWidget->setItem(i,j,item);
           }
       }
       ui->tableWidget->resize(350,150);
 
}
 
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::onTableWidgetClicked(int row, int col){
 
    l = row;
    k = col;
 
    QString tmp;
    ui->tableWidget->item(l,k)->text(tmp);
    ui->tableWidget->item(l,k)->text(tmp) = ui->tableWidget->item(l,k)->text(tmp);
    ui->tableWidget->item(l,k)->text(tmp);
 
}
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "dialog.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();
 
    return a.exec();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2014, 16:50
Ответы с готовыми решениями:

QTableWidget
Создаю таблицу. И она размещается в углу.(см. вложение) QTableWidget *tableWidget = new...

QTableWidget
хочу подсчитать среднее значение в столбцах void MTable::averange() { ...

QT 5.6 C++ QTableWidget
Здравствуйте!!! Создал QTableWidget через дизайнер форм. Разобрался как получить значение...

qtablewidget
qtablewidget заполняется данными, можно ли сделать так что бы щелчек по ячейки вызывал функцию? и...

3
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
17.11.2014, 17:19 2
C++ (Qt)
1
ui->tableWidget->item(l,k)->text(tmp) = ui->tableWidget->item(l,k)->text(tmp);
Это что вообще такое?

Чтобы сделать это, нужно взять выделеные юзером клетки, верно? Для этого есть

C++ (Qt)
1
QList<QTableWidgetItem *> QTableWidget::selectedItems() const
Берем текст двух клеток, сохраняем в QString, юзаем qSwap и вставляем обратно. Глобальные переменные не юзаем.
0
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 39
17.11.2014, 18:04  [ТС] 3
Добавлено через 33 секунды
Извините за грубость а можете показать как это реализовать))
0
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
17.11.2014, 18:44 4
freeflowmc, И все же, нужно сначала постараться самому и спросить в чем проблема если ничего не получилось.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
    QList<QTableWidgetItem*>list = ui->tableWidget->selectedItems();
    if(list.size() == 2)
    {
        QString f,s;
        f = list.first()->text();
        s = list.last()->text();
        qSwap(f,s);
        list.first()->setText(f);
        list.last()->setText(s);
    }
    else
        qDebug() << "wrong!";
1
17.11.2014, 18:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2014, 18:44
Помогаю со студенческими работами здесь

QTableWidget
Почему у меня не работает программа? Она вроде запускается но ничего не выводится. #include...

QTableWidget
Как сделать чтобы при клике на строку или ячейку в QTableWidget она не выделялось тоесть вообще...

QTableWidget
Доброго времени, Никто не подскажет, есть ли какой-либо метод сортировки допустим для цвета item'a...

QTableWidget
Есть стандартная таблица 3х3 , но при выделение двух ячеек они обмениваются содержимым,как я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru