QT: Пользовательский виджет в QScrollArea

Метод Method.invoke принимает объект для получения вызова метода и массив аргументов метода. Поскольку ваш метод принимает один аргумент, указанный массив должен иметь размер один.

попробуйте создать новый массив размером 1:

someMethod.invoke(anObject, new Object[] {parameters});

Обратите внимание, что одно значение в этом массиве может быть нулевым. Это будет имитировать anObject.someMethod(null)

5
задан troyane 22 November 2012 в 00:05
поделиться

3 ответа

Вам просто нужно указать размер и место вашего HelloWidget.

Добавьте эту строку в свой код.

hello->setGeometry(QRect(110, 80, 120, 80)); 



Или, если вы хотите заполнить область прокрутки своим виджетом:

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
    QScrollArea *const scroll(new QScrollArea);
    QHBoxLayout *const layout(new QHBoxLayout(scroll)); 
    HelloWidget *const hello(new HelloWidget);
    hello->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
    layout->addWidget(hello);
    setCentralWidget( scroll );
}
8
ответ дан 18 December 2019 в 13:18
поделиться

Per Qt docs, "When using a scroll area to display the contents of a custom widget, it is important to ensure that the size hint of the child widget is set to a suitable value. If a standard QWidget is used for the child widget, it may be necessary to call QWidget::setMinimumSize() to ensure that the contents of the widget are shown correctly within the scroll area."

Does it work right if you follow these instructions?

3
ответ дан 18 December 2019 в 13:18
поделиться

Я тоже растягивал волосы над этим, но в итоге нашел setWidgetResizable QScrollArea, который позволил QScrollArea расширить мой виджет, чтобы занять доступное пространство.

3
ответ дан 18 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: