Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QscrollArea полосы прокрутки 
:(
    Опции темы
xcommand
  Дата 15.5.2012, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет!

Помоготи разобраться.

Есть QscrollArea, в него помещаеться Qwidget на котором есть QImage.

дак вот немогу понять как заставить появиться скролинг.  smile 

PM MAIL   Вверх
bsa
Дата 15.5.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



xcommand, чтобы скроллинг появился необходимо, чтобы виджет внутри scrollarea был больше, чем сама эта area. используй setGeometry.
PM   Вверх
xcommand
Дата 15.5.2012, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(bsa @ 15.5.2012,  08:31)
xcommand, чтобы скроллинг появился необходимо, чтобы виджет внутри scrollarea был больше, чем сама эта area. используй setGeometry.

main.php
Код

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
   
    return a.exec();
}


mainwindow.h
Код

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "screenwidget.h"
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    screenWidget *widget;
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H



mainwindow.cpp

Код

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    widget = new screenWidget();
    ui->scrollArea->setWidget(widget);
}

MainWindow::~MainWindow()
{
    delete ui;
}


screenwidget.h

Код

#ifndef SCREENWIDGET_H
#define SCREENWIDGET_H

#include <QWidget>
class screenWidget: public QWidget
{
    Q_OBJECT

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

public:

    QImage screenQimage;

    QPixmap screenQpixmap;

    QRect rect;
protected:
    void paintEvent(QPaintEvent *event);
};
#endif //!SCREENWIDGET_H



screenwidget.cpp

Код

#include "screenwidget.h"
#include <QtGui>
screenWidget::screenWidget(QWidget *parent) :
    QWidget(parent)
{


    screenQpixmap = QPixmap::grabWindow(QApplication::desktop()->winId(),0,0,500,600);
    rect = screenQpixmap.rect();
    screenQimage = screenQpixmap.toImage();
    setGeometry(rect);


}
screenWidget::~screenWidget()
{

}

void screenWidget::paintEvent(QPaintEvent *event)
{
    QPainter *painter = new QPainter(this);


    painter->drawImage(rect, screenQimage, rect);

    painter->end();
}




вот код. не работает. куда копать?
PM MAIL   Вверх
_GRIN_
Дата 15.5.2012, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


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

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



xcommand, тебе же bsa сказал:

Цитата(bsa @  15.5.2012,  08:31 Найти цитируемый пост)
xcommand, чтобы скроллинг появился необходимо, чтобы виджет внутри scrollarea был больше, чем сама эта area. используй setGeometry. 


Что бы было понятнее - внимательно постмотри на скриншоты: http://qt-project.org/doc/qt-4.8/qscrollarea.html#details
как видишь, на крайнейм левом (виджет меньше скролларии) скроллбары не отображаются.

в крайнем случаее (если уж хочется видеть скроллбары когда они не нужны) задай политики:
Код

 ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
 ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);




--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
xcommand
Дата 18.5.2012, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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