Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: HirurG. от Май 13, 2011, 12:05



Название: [решено] Размещение Layout на QTabWidget
Отправлено: HirurG. от Май 13, 2011, 12:05
Здравствуйте! Возникла проблема с размещением компонентов на вкладках QTabWidget. Причём на двух вкладках QLabel не вызывают проблем, а QTabWidget на третьей выдаёт ошибку
mainwindow.cpp:49: ошибка: no matching function for call to ‘QTabWidget::addTab(QVBoxLayout*&, const char [19])’
код программы:
mainwindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtGui>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    QTabWidget *tab;

    QLabel *lbl1;
    QLabel *lbl2;
    QLabel *lbl3;

    QVBoxLayout *vbxVerticalLayout;

    QTableWidget tblA;
    QTableWidget tblB;
    QLabel *lblN;
    QLineEdit *leN;
    QPushButton *pbFill;
    QPushButton *pbCalc;

public slots:
    void setRange(QString);
    void fillTest();
    void Calculation();

};

#endif // MAINWINDOW_H
mainwindow.cpp
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    tab = new QTabWidget;

    lbl1 = new QLabel("Equation");
    lbl2 = new QLabel("System of equation");
    lbl3 = new QLabel("Root of m");

    QHBoxLayout *hbxToolLayout = new QHBoxLayout;
    QHBoxLayout *hbxTableLayout = new QHBoxLayout;
    vbxVerticalLayout = new QVBoxLayout;

    lblN = new QLabel("Vvedite razmernost' matrici");
    leN = new QLineEdit;
    pbFill = new QPushButton("TestFill");
    pbCalc = new QPushButton("Calculation");

    tblA.setRowCount(3);
    tblA.setColumnCount(3);
    leN->setText("3");

    tblB.setRowCount(3);
    tblB.setColumnCount(1);

    hbxToolLayout->addWidget(lblN);
    hbxToolLayout->addWidget(leN);
    hbxToolLayout->addWidget(pbFill);
    hbxToolLayout->addWidget(pbCalc);

    hbxTableLayout->addWidget(&tblA);
    hbxTableLayout->addWidget(&tblB);

    vbxVerticalLayout->addLayout(hbxToolLayout);
    vbxVerticalLayout->addLayout(hbxTableLayout);

    tblA.horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);

    tab->addTab(lbl1, "Equation");
    tab->addTab(vbxVerticalLayout, "System of equation");
    tab->addTab(lbl3, "Root of M");
    tab->resize(500, 200);

    setCentralWidget(tab);
    resize(tab->size());
}

MainWindow::~MainWindow()
{
//
}
Помогите пожалуйста :-\


Название: Re: Размещение Layout на QTabWidget
Отправлено: Alucard от Май 13, 2011, 12:11
Цитировать
‘QTabWidget::addTab(QVBoxLayout*&, const char [19])’
Цитировать
tab->addTab(vbxVerticalLayout, "System of equation");
Цитировать
int QTabWidget::addTab ( QWidget * page, const QString & label )


Название: Re: Размещение Layout на QTabWidget
Отправлено: GreatSnake от Май 13, 2011, 12:12
Цитировать
mainwindow.cpp:49: ошибка: no matching function for call to ‘QTabWidget::addTab(QVBoxLayout*&, const char [19])’
Ну а что, прочитать сообщение об ошибке не судьба?
Ведь компилятор ругается, что у QTabWidget-а нет такого метода.
Позволительно добавлять виджеты, а ты пытаешься добавить лейаут, который таковым не является.


Название: Re: Размещение Layout на QTabWidget
Отправлено: HirurG. от Май 13, 2011, 12:15
Цитировать
‘QTabWidget::addTab(QVBoxLayout*&, const char [19])’
Цитировать
tab->addTab(vbxVerticalLayout, "System of equation");
Цитировать
int QTabWidget::addTab ( QWidget * page, const QString & label )
а подробней можно, пожалуйста  :)


Название: Re: Размещение Layout на QTabWidget
Отправлено: HirurG. от Май 13, 2011, 12:22
Цитировать
mainwindow.cpp:49: ошибка: no matching function for call to ‘QTabWidget::addTab(QVBoxLayout*&, const char [19])’
Ну а что, прочитать сообщение об ошибке не судьба?
Ведь компилятор ругается, что у QTabWidget-а нет такого метода.
Позволительно добавлять виджеты, а ты пытаешься добавить лейаут, который таковым не является.
я тебя понял. думал компилятор на какие-то косяки с указателями ругается, а оказывается на вкладку просто сразу слои нельзя добавлять. решил добавлением на таб виджета, на котором уже закреплён слой. всем спасибо  :)