Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Февраль 14, 2011, 15:52



Название: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 15:52
Здравствуйте, вот пытаюсь использовать компонент statusBar, а он мне выдает

Ошибка   1   error C2385: неоднозначный уровень доступа "statusBar"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   36
Код таков
statusBar->addWidget(StatusBarMainLabel);
Пробовал писать и так this->statusBar->addWidget(StatusBarMainLabel);, то же самое


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 16:10
Что такое StatusBarMainLabel?


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: alexman от Февраль 14, 2011, 16:12
Наверное statusBar()->addWidget( ... ); ;)


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 16:46
StatusBarMainLabel-это объект типа QLabel
Цитировать
statusBar()->addWidget( ... )
А почему ведь statusBar- это объект?


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 16:48
Не помогло(


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 17:17
Ей богу как ребёнок... Уже 118 постов, а жить в форуме так и не научился.  :(

Где код? Где ошибки компилятора?


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 17:20
Вы посмотрите первый пост, там и ошибка компилятора, и код


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 17:24
Мде, он ещё и издевается :o

Что такое this, StatusBarMainLabel?
Где код нам это показывающий?




Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: pastor от Февраль 14, 2011, 17:26
Кода в первом посте нет. Там какой-то огрызок. Что такое statusBar?

Разве так трудно привести полный код? Ведь это тебе нужно!


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 17:35
statusBar это объект типа QStatusBar, он у меня в дизайнере создается вместе с главным окном,
этот "огрызок" единственное использование этого объекта в проекте


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 17:38
Мде, горбатого могила исправит...


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 17:48
В объявлении
   QLabel * StatusBarMainLabel;
В конструкторе
        StatusBarMainLabel = new QLabel;
   StatusBarMainLabel->setText("dfgfdg");
   statusBar->addWidget(StatusBarMainLabel);
Выскакивает следующая ошибка
Ошибка   1   error C2385: неоднозначный уровень доступа "statusBar"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   36
В аттаче картинка из дизайнера, что бы стало более понятно


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 17:54
добавь инклюд

#include <QStatusBar>

и вызывай

statusBar()->addWidget(StatusBarMainLabel);


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 17:57
Не помогло, ошибка та жа


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: pastor от Февраль 14, 2011, 18:01
Покажи объявление класса глвного окна (полностью).


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: alexman от Февраль 14, 2011, 18:09
ruzik, один сплошной флуд.


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 18:10
Код:
#ifndef MYBR_H
#define MYBR_H

#include <QtGui/QMainWindow>
#include "ui_mybr.h"
#include "QLineEdit"
#include "QPushButton"
#include "QProgressBar"
#include "QLabel.h"
#include <QStatusBar>
#include "RizekFoundationClasses/RizekLineEdit/RizekLineEdit.h"

class MyBr : public QMainWindow, public Ui::MyBrClass
{
Q_OBJECT

public:
MyBr(QWidget *parent = 0, Qt::WFlags flags = 0);
~MyBr();
public slots:
void load();
void setTitle(bool);
signals:
void FormResize();
protected:
void resizeEvent( QResizeEvent* );
public:
RizekLineEdit * Address;
QPushButton * PrevButton;
QPushButton * Refresh;
QPushButton * NextButton;
QPushButton * Go;
QPushButton * StopButton;
QLabel * StatusBarMainLabel;
QProgressBar * Progress;
QPixmap * BackMainToolBarImage;
};

#endif // MYBR_H


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: pastor от Февраль 14, 2011, 18:19
Покажи еще конструктор MyBr.


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 14, 2011, 18:22
Он не очень маленький)
Код:
MyBr::MyBr(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
setupUi(this);
this->setWindowTitle("Web-Rizek 2.0");
PrevButton = new QPushButton;
PrevButton->setText("<-");
PrevButton->setFixedWidth(30);
PrevButton->setToolTip(tr("Go back"));
Refresh = new QPushButton;
Refresh->setText("(%)");
Refresh->setFixedWidth(30);
Refresh->setToolTip(tr("Refresh"));
NextButton = new QPushButton;
NextButton->setText("->");
NextButton->setFixedWidth(30);
NextButton->setToolTip(tr("Go next"));
Address = new RizekLineEdit;
Address->setFixedWidth(400);
Address->setToolTip(tr("Adress of your site"));
Go = new QPushButton;
Go->setText(tr("Go!"));
Go->setFixedWidth(35);
Go->setToolTip(tr("Go"));
StopButton = new QPushButton;
StopButton->setText("X");
StopButton->setFixedWidth(30);
StopButton->setToolTip(tr("Stop"));
StatusBarMainLabel = new QLabel;
StatusBarMainLabel->setText("dfgfdg");
statusBar()->addWidget(StatusBarMainLabel);
Progress= new QProgressBar;
Progress->setValue(0);
Progress->setTextVisible(false);
this->setStyleSheet("QToolBar {background-image: url(:/picture/maintoolbar.png) ;}");
this->setStyleSheet("QProgressBar { border: 2px solid grey; border-radius: 5px;  background-color: #05B8CC; width: 20px;}"
"QProgressBar::chunk { background-color: #CD96CD; width: 10px; margin: 0.5px;}");
//*******************
mainToolBar->addWidget(PrevButton);
mainToolBar->addWidget(Refresh);
mainToolBar->addWidget(NextButton);
mainToolBar->addWidget(StopButton);
mainToolBar->addWidget(Address);
mainToolBar->addWidget(Go);
mainToolBar->addWidget(Progress);
//*******************
//==========================
connect(PrevButton, SIGNAL(clicked()), webView , SLOT(back()));
connect(NextButton, SIGNAL( clicked()), webView , SLOT(forward()));
connect(Refresh , SIGNAL(clicked()), webView, SLOT(Refresh()));
connect(StopButton, SIGNAL(clicked()), webView, SLOT(stop()));
connect(Go , SIGNAL(clicked()), this , SLOT(load()));
connect(webView, SIGNAL(loadProgress(int)), Progress , SLOT(setValue(int)));
connect(webView , SIGNAL(loadFinished(bool)), this, SLOT(setTitle(bool)));
//==========================

}


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 19:40
поменяй
class MyBr : public QMainWindow, public Ui::MyBrClass
на
class MyBr : public Ui::MyBrClass

хотя наверняка завалится на другом, т.к. очень всё наворочено из-за отсутствия элементарных знаний(


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: Kolobok от Февраль 14, 2011, 20:53
QMainWindow и Ui оба имеют метод statusBar(). Поэтому неоднозначность. Напиши так
QMainWindow::statusBar()->addWidget(...)


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 21:36
Цитировать
QMainWindow и Ui оба имеют метод statusBar(). Поэтому неоднозначность. Напиши так
QMainWindow::statusBar()->addWidget(...)
Не нужно советовать то, в чём не разбираетесь.  :)
В Qt непозволительно делать множественное наследование от нескольких QObject.


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: Kolobok от Февраль 14, 2011, 21:47
Цитировать
QMainWindow и Ui оба имеют метод statusBar(). Поэтому неоднозначность. Напиши так
QMainWindow::statusBar()->addWidget(...)
Не нужно советовать то, в чём не разбираетесь.  :)
В Qt непозволительно делать множественное наследование от нескольких QObject.

С каких пор Ui стал наследником QObject?!


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: Fat-Zer от Февраль 14, 2011, 21:48
Цитировать
QMainWindow и Ui оба имеют метод statusBar(). Поэтому неоднозначность. Напиши так
QMainWindow::statusBar()->addWidget(...)
Не нужно советовать то, в чём не разбираетесь.  :)
В Qt непозволительно делать множественное наследование от нескольких QObject.
Ui::MyBrClass - не должен быть наследника QObject'а, если ТС какое-нить тёмное дело не задумал...


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 14, 2011, 21:52
Цитировать
С каких пор Ui стал наследником QObject?!
Не Ui, а Ui::MyBrClass. А судя по коду приведённому выше сей класс является производным от QMainWindow, который является производным от QObject.


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: Kolobok от Февраль 14, 2011, 23:01
Цитировать
С каких пор Ui стал наследником QObject?!
Не Ui, а Ui::MyBrClass. А судя по коду приведённому выше сей класс является производным от QMainWindow, который является производным от QObject.

Не является. Чем рассуждать, лучше попробуй создать такую форму и вызови ее метод statusBar. Единственное, в чем я ошибся - в Ui это не метод, а открытый член класса.


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: pastor от Февраль 15, 2011, 00:59
Ui::MyBrClass не является наследником QMainWindow. Читаем про The Multiple Inheritance Approach в ассистанте.

имхо тут имеет место конфликт имен: statusBar() из QMainWindow и statusBar переменная из Ui::MyBrClass. Переименуй statusBar в что нить другое.


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: GreatSnake от Февраль 15, 2011, 08:06
Упс, сорри, слона то я и не приметил.
Видать вчера уже поздно было, чтобы лезть в форум)


Название: Re: Неоднозначный уровень доступа "statusBar"
Отправлено: ruzik от Февраль 15, 2011, 14:16
Ui::MyBrClass не является наследником QMainWindow. Читаем про The Multiple Inheritance Approach в ассистанте.

имхо тут имеет место конфликт имен: statusBar() из QMainWindow и statusBar переменная из Ui::MyBrClass. Переименуй statusBar в что нить другое.
Спасибо, помогло