Re: С++ Qt ввід і вивід полів через перевантажені оператори >> <<
Тоді можете його викласти для прийдешніх поколінь?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → С++ Qt ввід і вивід полів через перевантажені оператори >> <<
Для відправлення відповіді ви повинні увійти або зареєструватися
Тоді можете його викласти для прийдешніх поколінь?
Ось я додаю готовий код для вирішення заданої проблеми. Наперед скажу, що створений клас MyFrame має 3 поля типу QLineEdit. Перевантажені оператори >> << використовуються для вводу полів в моєму кастомному класі Triangle - сторін трикутника з форми(фрейму) та виводу їх на форму.(вибачте, але розбивку на файли не зробив - не знаю як це тут робити)
Клас MyFrame(оголошення)
#ifndef MYFRAME_H
#define MYFRAME_H
//#include <interface.h>
//#include <qwidget.h>
#include <QTextEdit>
#include <QLineEdit>
#include<QFrame>
class MyFrame : public QFrame
{
Q_OBJECT
public:
explicit MyFrame(QWidget *parent = nullptr);
QLineEdit * sideA;
QLineEdit * sideB;//= new QLineEdit(this);
QLineEdit * sideC;//=new QLineEdit(this);
};
MyFrame& operator >> (MyFrame &frame, Triangle *itemm);
MyFrame& operator << (MyFrame &frame, Triangle *item);
#endif // MYFRAME_H
MyFrame.cpp
#include "myframe.h"
MyFrame::MyFrame(QWidget *parent):QFrame(parent)
{
sideA =new QLineEdit(this);
sideB= new QLineEdit(this);
sideC=new QLineEdit(this);
sideA->setObjectName(QString::fromUtf8("sideA"));
sideA->setGeometry(QRect(10,10,120,25));
sideB->setObjectName(QString::fromUtf8("sideB"));
sideB->setGeometry(QRect(10,40,120,25));
sideC->setObjectName(QString::fromUtf8("sideC"));
sideC->setGeometry(QRect(10,70,120,25));
}
перевантажені оператори << >>
MyFrame& operator << (MyFrame &frame, Triangle *item)
{
frame.sideA->setText(QString::number(item->getA()));
frame.sideB->setText(QString::number(item->getB()));
frame.sideC->setText(QString::number(item->getC()));
return frame;
}
MyFrame& operator >> (MyFrame &frame, Triangle *itemm)
{
bool ok=false;
itemm->setA(frame.sideA->text().toDouble(&ok));
if(!ok) abort();
itemm->setB(frame.sideB->text().toDouble(&ok));
if(!ok) abort();
itemm->setC(frame.sideC->text().toDouble(&ok));
if(!ok) abort();
return frame;
}
Виклик
...
ui->setupUi(this);//формування інтерфейсу разом з кастомним фреймом(в редакторі потрібно додати фрейм з назвою класу-MyFrame)
*ui->frame >> item;...//там, де вам потрібно
Для відправлення відповіді ви повинні увійти або зареєструватися