crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Young
  опции профиля:
сообщение 10.10.2013, 15:53
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 10.10.2013
Пользователь №: 3952

Спасибо сказали: 0 раз(а)




Репутация:   0  


доброго времени суток уважаемые знатоки, пол дня не могу решить, на первый взгляд, идиотскую проблемму. Хотел сделать прямоугольный виджет на главном окне. Сделал класс А, унаследованный от QWidget и класс B, унаследованный от QMainWindow. Объявил переменную типа А в классе В, инициализировал в конструкторе, сделал переменную производной от "centralwidget" класса В и покрасил её при помощи "setStyleSheet". Виджет класса А на окне не отобразился. Сделал переменную А самостоятельным окном - окно появилось нужного цвета. Для проверки сделал в классе В ещё одну переменную, но уже типа QWidget, проделал с ней все то же самое, что и с предыдущей - и все получилось. Не могли бы вы подсказать, в чем я ошибся. Код прилогается

Класс А
#ifndef MAINTOOLBAR_H
#define MAINTOOLBAR_H

#include "hc_qt_disp.h"
#include "properties.h"     //визуальные настройки

class MyToolbar;

class MainToolbar : public QWidget
{
    Q_OBJECT
    Q_PROPERTY( int wdg_name READ Name WRITE Rename )       //объявление свойства wdg_name

    public:

        MainToolbar( QWidget *parent );
        virtual ~MainToolbar();

        //свойство wdg_name
        int Name() const { return wdg_name; }
        void Rename( int name ) { wdg_name = name; }

        ..........

};

#endif // MAINTOOLBAR_H


конструктор класса А
MainToolbar::MainToolbar( QWidget *parent ) : QWidget(parent)
{}


класс В
#ifndef MAINRADAR_H
#define MAINRADAR_H

#include "hc_qt_disp.h"
#include "MainToolbar.h"

class MainRadar : public QMainWindow
{
    Q_OBJECT

    public:

        MainRadar();
        ~MainRadar();

    private:

        QWidget *Test_widget;       //!!!!! Test string !!!!!

        QWidget *centralwidget;
        QStatusBar *statusbar;
        QHBoxLayout *TB_layout;
        QSpacerItem *spacerItem;

        MainToolbar * upper_toolbar;

        void SetupUi( QMainWindow * main_window );
        void RetranslateUi( QMainWindow *main_window );

        ..............

};

#endif // MAINRADAR_H



конструктор класса В
MainRadar::MainRadar()
{
    SetupUi(this);
}


void MainRadar::SetupUi(QMainWindow *MainWindow)
{
    if (MainWindow->objectName().isEmpty())
        MainWindow->setObjectName(QString::fromUtf8("MainWindow"));

    centralwidget = new QWidget(MainWindow);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));

//  !!! проверочный код, который работает !!!
//        Test_widget = new QWidget(centralwidget);
//        Test_widget->setGeometry(QRect(0, 0, 800, 600));
//        Test_widget->setStyleSheet("background-color: yellow");

    upper_toolbar = new MainToolbar();
    upper_toolbar->setGeometry(QRect(0, 0, 800, 600));
    upper_toolbar->setStyleSheet("background-color: red");

    ..................


} // setupUi


Цитата(Young @ 10.10.2013, 16:51) *
доброго времени суток уважаемые знатоки, пол дня не могу решить, на первый взгляд, идиотскую проблемму. Хотел сделать прямоугольный виджет на главном окне. Сделал класс А, унаследованный от QWidget и класс B, унаследованный от QMainWindow. Объявил переменную типа А в классе В, инициализировал в конструкторе, сделал переменную производной от "centralwidget" класса В и покрасил её при помощи "setStyleSheet". Виджет класса А на окне не отобразился. Сделал переменную А самостоятельным окном - окно появилось нужного цвета. Для проверки сделал в классе В ещё одну переменную, но уже типа QWidget, проделал с ней все то же самое, что и с предыдущей - и все получилось. Не могли бы вы подсказать, в чем я ошибся. Код прилогается

Класс А
#ifndef MAINTOOLBAR_H
#define MAINTOOLBAR_H

#include "hc_qt_disp.h"
#include "properties.h"     //визуальные настройки

class MyToolbar;

class MainToolbar : public QWidget
{
    Q_OBJECT
    Q_PROPERTY( int wdg_name READ Name WRITE Rename )       //объявление свойства wdg_name

    public:

        MainToolbar( QWidget *parent );
        virtual ~MainToolbar();

        //свойство wdg_name
        int Name() const { return wdg_name; }
        void Rename( int name ) { wdg_name = name; }

        ..........

};

#endif // MAINTOOLBAR_H


конструктор класса А
MainToolbar::MainToolbar( QWidget *parent ) : QWidget(parent)
{}


класс В
#ifndef MAINRADAR_H
#define MAINRADAR_H

#include "hc_qt_disp.h"
#include "MainToolbar.h"

class MainRadar : public QMainWindow
{
    Q_OBJECT

    public:

        MainRadar();
        ~MainRadar();

    private:

        QWidget *Test_widget;       //!!!!! Test string !!!!!

        QWidget *centralwidget;
        QStatusBar *statusbar;
        QHBoxLayout *TB_layout;
        QSpacerItem *spacerItem;

        MainToolbar * upper_toolbar;

        void SetupUi( QMainWindow * main_window );
        void RetranslateUi( QMainWindow *main_window );

        ..............

};

#endif // MAINRADAR_H



конструктор класса В
MainRadar::MainRadar()
{
    SetupUi(this);
}


void MainRadar::SetupUi(QMainWindow *MainWindow)
{
    if (MainWindow->objectName().isEmpty())
        MainWindow->setObjectName(QString::fromUtf8("MainWindow"));

    centralwidget = new QWidget(MainWindow);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));

//  !!! проверочный код, который работает !!!
//        Test_widget = new QWidget(centralwidget);
//        Test_widget->setGeometry(QRect(0, 0, 800, 600));
//        Test_widget->setStyleSheet("background-color: yellow");

    upper_toolbar = new MainToolbar(centralwidget);
    upper_toolbar->setGeometry(QRect(0, 0, 800, 600));
    upper_toolbar->setStyleSheet("background-color: red");

    ..................


} // setupUi

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 25.6.2025, 0:23