Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер рабочей области QMainWindow, Как получить размер рабочей области 
:(
    Опции темы
plica98
Дата 29.8.2012, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



Mainw::Mainw()
{
    QTextCodec* codec = QTextCodec::codecForName("UTF8");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForCStrings(codec);

    createConnectiom();

    scene = new myScene;
    scene->setSceneRect(QRectF(0, 0,EW,EH));
    scene->setBackgroundBrush(Qt::lightGray);
   
    connect(scene,SIGNAL(LeftButtonpress(QGraphicsItem *)),this,SLOT(Cmd(QGraphicsItem *)));
    connect(scene,SIGNAL(RightButtonpress(QGraphicsItem *)),this,SLOT(Hlp(QGraphicsItem *)));


    editor= new QGraphicsView(scene);
    this->setCentralWidget(editor);
    this->showMaximized();

//    qDebug() << "ШИРИНА " << this->editor->geometry().width();

    menu = menuBar();
    QMenu *file = new QMenu(tr("&Файл"));

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




Это сообщение отредактировал(а) plica98 - 29.8.2012, 12:56
PM MAIL   Вверх
math64
Дата 29.8.2012, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Цитата(bsa @  29.8.2012,  10:24 Найти цитируемый пост)
plica98, а ты установил graphicsView в качестве centralWidget? 

Если используется дизайнер - он сам сгенерирует код, размещающий graphicsView внутри centralWidget. При размещении виджетов вручную от centralWidget можно избавиться, но на размер graphicsView это не повлияет.
Кстати, при использовании дизайнера нужно для centralWidget назначить layout (неважно какой - я использую вертикальный), установив ему поля в 0.
Иначе graphicsView будет иметь размеры, заданные в дизайнере.

PM   Вверх
plica98
Дата 29.8.2012, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



Да, фрагмент конструктора Mainwindow() приведен выше.

Это сообщение отредактировал(а) plica98 - 29.8.2012, 12:55
PM MAIL   Вверх
math64
Дата 29.8.2012, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Код

class GraphicsView : public QGraphicsView {
public:
    GraphicsView(QWidget* parent, QStatusBar* statusBar) : QGraphicsView(parent) {
        this->statusBar = statusBar;
    }
protected:
    void resizeEvent(QResizeEvent * event) {
        QGraphicsView::resizeEvent(event);
        QSize old = event->oldSize();
        QSize sz = event->size();
        statusBar->showMessage("old:" +
                    QString::number(old.width()) + "x" + QString::number(old.height()) +
                               " new: " +
                               QString::number(sz.width()) + "x" + QString::number(sz.height())
                               );
    }

    QStatusBar* statusBar;
};
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    QStatusBar* statusBar = new QStatusBar(&w);
    QGraphicsScene* scene = new QGraphicsScene(&w);
    scene->addEllipse(0.,50.,100.,100.,QPen(Qt::black), QBrush(Qt::green) ) ;
    scene->addRect(50.,0.,100.,100.,QPen(Qt::black), QBrush(Qt::red) ) ;
    scene->addLine(0.,0.,100.,100.,QPen(Qt::gray, 5) ) ;
    scene->addSimpleText(w.tr("Some Text") ) ;
    scene->setSceneRect(-100, -100, 500, 500);
    QGraphicsView* view = new GraphicsView(&w, statusBar);
    view->setScene(scene);
    w.setCentralWidget(view);
    w.setStatusBar(statusBar);
    statusBar->showMessage(w.tr("Ready"));
    w.showMaximized();
    return a.exec();
}


Вывод в статус : old: 500x500 new: 1278x921
После w.showMaximized() размер ещё старый - окно ещё не показано на экране, это будет сделано в a.exec();

Это сообщение отредактировал(а) math64 - 29.8.2012, 13:13
PM   Вверх
plica98
Дата 30.8.2012, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



math64, спасибо.

Буду разбираться.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.