LINUX.ORG.RU

[QT] subclassing

 


0

0

Здравствуйте! ДОпустим я в QT Disigner создал виджет QTableWidget. Как бы мне сделать сабклассинг этого виджета. Те я создал дополнительно класс. «CTablePay.h»

#include <QTableWidget>
class QLabel;
class QPushButton;
class QLineEdit;
class TablePay :public QTableWidget{
Q_OBJECT
        public:
        TablePay(QWidget* parent = 0);
        //signals:
        //void HellofromTablePay(const QString&);
        private slots:
        void getHello(const QString&);
        private:
        QString t_str;
};
#endif // CTABLEPAYS_H
CTablePay.cpp
#include <QtGui>
#include "CTablePays.h"

TablePay::TablePay(QWidget* parent)
        :QTableWidget(parent)
{

    t_str="hello,world";
}


void TablePay::getHello(const QString& s)
{
    t_str=s;
}

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include "CTablePays.h"
namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QTableWidget* buf_p;
    //TablePay* real_p;
};

#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "CTablePays.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow),buf_p(new TablePay(ui->buf_pay))//,real_p(&TablePay(ui->real_pay))
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
На главном окне некий виджет QTablePay. Хотелось бы как то сделать так чтобы за место QTableWidget Создавался объект моего класса, который является наследником QTableWidget. Помогите пожалуйста разобраться.


Напиши плагин для designer'а

mannaz
()

создаёте элемент QTableWidget, ПКМ, «Promote to…». указываете «Promoted class name» = «TablePay», «Header file» = «CTablePays.h».

arsi ★★★★★
()
Ответ на: комментарий от arsi

А если я сделаю так? хсщвуъ

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QTableWidget* buf_p;
    //TablePay* real_p;
};

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "CTablePays.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow),buf_p(new TablePay(ui->buf_pay))//,real_p(&TablePay(ui->real_pay))
{
    ui->setupUi(this);
}
Это сработает? Те принициализировать указатель на базовый класс QTableWidget указателем на класс TablePay.

jeep
() автор топика
Ответ на: комментарий от jeep

> Это сработает?

О_О

технически — сработает… наверное. в смысле, скорее всего скомпилируется =) но в результате вы получите свою таблицу внутри таблицы ui->buf_pay.

arsi ★★★★★
()
Ответ на: комментарий от arsi

Тык сработало. И даже выглядело нормально, но наверно все таки не то - таблица в таблице мне не нужна. Спасибо за Promote to... и скрины. Огромное спасибо - это сработало и то что нужно.

jeep
() автор топика
Ответ на: комментарий от jeep

может нужно использовать не просто дизайнер а кутикреатор?

teferiincub
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.