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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: TreeWidget  (Прочитано 4544 раз)
Aswed
Гость
« : Сентябрь 12, 2011, 18:34 »

Всем приветы. Мне нужно поместить элемент в список

код:
Код:
rezult = new QTreeWidget;
. . .

QTreeWidgetItem* newab = new QTreeWidgetItem(rezult);
QByteArray buf = ab.FIO.toAscii();
newab->setText(0,buf.data());
newab->setText(1,itoa(ab.school,3));
newab->setText(2,itoa(ab.age,3));
if (ab.sex==1) newab->setText(3,"M");
else newab->setText(3,"W");

что я делаю не так?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Сентябрь 12, 2011, 19:09 »

Код
C++ (Qt)
rezult->addTopLevelItem(newab);
а зачем вот эти сложности с ФИО и числами (я правда не понимаю что это за второй параметр такой у itoa()), если можно просто
Код
C++ (Qt)
newab->setText(0, ab.FIO);
newab->setText(1, QString::number(ab.school);
newab->setText(2, QString::number(ab.age));
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Aswed
Гость
« Ответ #2 : Сентябрь 12, 2011, 19:40 »

Код
C++ (Qt)
rezult->addTopLevelItem(newab);
а зачем вот эти сложности с ФИО и числами (я правда не понимаю что это за второй параметр такой у itoa()), если можно просто

Компилер пишет, что нет такой функции(
itoa- int to char, второй параметр- разрядность числа. Функция самодельная).
« Последнее редактирование: Сентябрь 12, 2011, 19:44 от Aswed » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Сентябрь 12, 2011, 19:54 »

Компилер пишет, что нет такой функции(
значит rezult объявлен не как QTreeWidget *. в таком случае
Код
C++ (Qt)
static_cast<QTreeWidget *>(rezult)->addTopLevelItem(newab);
itoa- int to char, второй параметр- разрядность числа. Функция самодельная).
Код
C++ (Qt)
newab->setText(1, QString::number(ab.school, 3);
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Aswed
Гость
« Ответ #4 : Сентябрь 12, 2011, 20:05 »

Код
C++ (Qt)
QTreeWidgetItem* newab = new QTreeWidgetItem(rezult);
rezult->addTopLevelItem(newab);
newab->setText(0,ab.FIO);
newab->setText(1,QString::number(ab.school));
newab->setText(2,QString::number(ab.age));
if (ab.sex==1) newab->setText(3,"M");
else newab->setText(3,"W");
rezult->addTopLevelItem(newab);
 
Все компилится, но элемент не добавляется
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #5 : Сентябрь 12, 2011, 20:15 »

2 раза добавлять элемент не нужно

должно работать. что происходит перед этим? надо больше кода.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Aswed
Гость
« Ответ #6 : Сентябрь 12, 2011, 20:31 »

Код
C++ (Qt)
#include <QtGui>
#include "form.h"
#include "abiturient.h"
#include "operations.h"
 
Window::Window(QWidget *parent) : QDialog(parent)
{
//Объявление
setWindowTitle(trUtf8("Многосвязные списки"));
agel = new QLabel(trUtf8("Возраст"));
age = new QSpinBox;
schooll = new QLabel(trUtf8("Школа"));
school = new QSpinBox;
FIOl = new QLabel(trUtf8("ФИО"));
FIO = new QLineEdit;
sexl = new QLabel(trUtf8("Пол"));
sex = new QComboBox;
sex->addItem(QString::fromAscii("Male"));
sex->addItem(QString::fromAscii("Female"));
rezult = new QTreeWidget;//Вывод ввиде списка, сделан по типу qt3
QStringList labels;//да будут колонки
labels<<trUtf8("ФИО")<<trUtf8("Школа")<<trUtf8("Возраст")<<trUtf8("Пол");//собстно они
rezult->setHeaderLabels(labels);//ввести колонка в списка
searchButton = new QPushButton(trUtf8("&Поиск"));
addButton = new QPushButton(trUtf8("&Добавить"));
delButton = new QPushButton(trUtf8("&Удалить"));
//Signals
connect(addButton, SIGNAL(clicked), this, SLOT(addpress));//+1
connect(delButton, SIGNAL(clicked), this, SLOT(delpress));//-1
connect(searchButton, SIGNAL(clicked), this, SLOT(serchpress));
//Компоновка
QVBoxLayout* Vl = new QVBoxLayout;
Vl->addWidget(agel);
Vl->addWidget(age);
Vl->addWidget(schooll);
Vl->addWidget(school);
Vl->addWidget(FIOl);
Vl->addWidget(FIO);
Vl->addWidget(sexl);
Vl->addWidget(sex);
Vl->addStretch();
 
QVBoxLayout* Vr = new QVBoxLayout;
Vr->addWidget(searchButton);
Vr->addWidget(addButton);
Vr->addWidget(delButton);
Vr->addStretch();
 
QHBoxLayout* mL = new QHBoxLayout;
mL->addLayout(Vl);
mL->addWidget(rezult);
mL->addLayout(Vr);
 
setLayout(mL);
}
 
void Window::addpress()
{
abiturient ab;
ab.age = age->value();
ab.school = school->value();
ab.FIO = FIO->text();
ab.sex = sex->currentIndex();
 
// push(ab);
 
QTreeWidgetItem* newab = new QTreeWidgetItem(rezult);
rezult->addTopLevelItem(newab);
newab->setText(0,ab.FIO);
newab->setText(1,QString::number(ab.school));
newab->setText(2,QString::number(ab.age));
if (ab.sex==1) newab->setText(3,"M");
else newab->setText(3,"W");
rezult->addTopLevelItem(newab);
}
 
Записан
cya-st
Гость
« Ответ #7 : Сентябрь 12, 2011, 22:13 »

Попробуй
Код:
result->insertTopLevelItems(0, newab);
вместо
Код:
rezult->addTopLevelItem(newab);
Записан
Aswed
Гость
« Ответ #8 : Сентябрь 12, 2011, 23:07 »

Попробуй
Код:
result->insertTopLevelItems(0, newab);
вместо
Код:
rezult->addTopLevelItem(newab);

Все равно не работает
Записан
SeverusSnape
Гость
« Ответ #9 : Сентябрь 13, 2011, 09:06 »

Сделайте так:
Код:
QTreeWidget*rezult = new QTreeWidget(this); // для примера
QTreeWidgetItem *newab = new QTreeWidgetItem(rezult);
newab->setText(0,ab.FIO);
newab->setText(1,QString::number(ab.school));
newab->setText(2,QString::number(ab.age));
if (ab.sex==1) newab->setText(3,"M");
else newab->setText(3,"W");
rezult->addTopLevelItem(newab);

не совсем понятно зачем вы дважды пытаетесь вставить итем
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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