scrollarea fix

This commit is contained in:
Atul R 2021-03-07 20:27:31 +01:00
parent b7ad6ed815
commit 8f7bde6e0a
5 changed files with 59 additions and 112 deletions

View File

@ -5,7 +5,7 @@ if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment version")
function(AddCommonConfig addonName)
target_compile_features(${addonName} PRIVATE

View File

@ -51,7 +51,7 @@ QScrollAreaWrap::QScrollAreaWrap(const Napi::CallbackInfo& info)
this->rawData = extrautils::configureQWidget(
this->getInternalInstance(), this->getInternalInstance()->getFlexNode(),
true);
false);
}
Napi::Value QScrollAreaWrap::ensureVisible(const Napi::CallbackInfo& info) {

View File

@ -1,118 +1,69 @@
import { QMainWindow, QWidget } from '.';
import { QGridLayout } from './lib/QtWidgets/QGridLayout';
import { QLabel } from './lib/QtWidgets/QLabel';
import { QTreeWidget } from './lib/QtWidgets/QTreeWidget';
import { QTreeWidgetItem } from './lib/QtWidgets/QTreeWidgetItem';
import { QIcon } from './lib/QtGui/QIcon';
import { QDesktopWidget } from './lib/QtWidgets/QDesktopWidget';
import { QApplication } from './lib/QtGui/QApplication';
import { QScrollArea } from './lib/QtWidgets/QScrollArea';
import { FlexLayout } from './lib/core/FlexLayout';
import { WidgetEventTypes } from './lib/core/EventWidget';
import { SizeConstraint } from './lib/QtWidgets/QLayout';
const win = new QMainWindow();
win.resize(500, 500);
// ex 1
const desktop = new QDesktopWidget();
const availableGeometry = desktop.availableGeometry();
const screenGeometry = desktop.screenGeometry();
console.log(availableGeometry.width() + 'x' + availableGeometry.height());
console.log(screenGeometry.width() + 'x' + screenGeometry.height());
console.log(desktop.screenNumber());
// ex 2
const qApp = QApplication.desktop();
const availableGeometry2 = qApp.availableGeometry();
const screenGeometry2 = qApp.screenGeometry();
console.log(availableGeometry2.width() + 'x' + availableGeometry2.height());
console.log(screenGeometry2.width() + 'x' + screenGeometry2.height());
console.log(qApp.screenNumber());
win.setObjectName('win');
const outer = new QWidget();
const outerLayout = new QGridLayout();
outer.setLayout(outerLayout);
outer.setInlineStyle('background-color: red');
console.log(outerLayout.rowCount(), outerLayout.columnCount());
outerLayout.setColumnStretch(0, 2);
outerLayout.setRowStretch(1, 2);
outerLayout.setColumnMinimumWidth(1, 200);
outerLayout.setRowMinimumHeight(0, 100);
outerLayout.setHorizontalSpacing(20);
outerLayout.setVerticalSpacing(50);
outer.setObjectName('outer');
outer.setInlineStyle(`border: 2px solid pink;`);
const scrollArea = new QScrollArea();
scrollArea.setObjectName('scrollArea');
outer.setLayout(new FlexLayout());
console.log(outerLayout.columnStretch(0), outerLayout.columnStretch(1));
console.log(outerLayout.rowMinimumHeight(0), outerLayout.rowMinimumHeight(1));
console.log(outerLayout.verticalSpacing(), outerLayout.horizontalSpacing());
scrollArea.setInlineStyle(`flex: 1; min-height:0; align-self:'stretch';border: 2px solid green;`);
const sview = new QWidget();
sview.setObjectName('sview');
sview.setLayout(new FlexLayout());
sview.setInlineStyle(`border:2px solid yellow; min-width: 100%;`);
const columnOne = new QLabel();
columnOne.setText('One');
columnOne.setInlineStyle('background-color: blue');
outerLayout.addWidget(columnOne, 0, 0);
const columnTwo = new QLabel();
columnTwo.setText('Two');
columnTwo.setInlineStyle('background-color: green');
outerLayout.addWidget(columnTwo, 0, 1);
const columnThree = new QLabel();
columnThree.setText('Three');
columnThree.setInlineStyle('background-color: yellow');
outerLayout.addWidget(columnThree, 1, 0);
const columnFour = new QLabel();
columnFour.setText('Four');
columnFour.setInlineStyle('background-color: orange');
outerLayout.addWidget(columnFour, 1, 1);
const tree = new QTreeWidget();
tree.setColumnCount(2);
tree.setHeaderLabels(['First Column', 'Second Column']);
tree.setSortingEnabled(true);
tree.setInlineStyle('font-size: 24px');
outerLayout.addWidget(tree, 2, 0, 2, 0);
console.log(outerLayout.rowCount(), outerLayout.columnCount());
const myImage = './website/static/img/logo.png';
const icon = new QIcon(myImage);
const item1 = new QTreeWidgetItem();
item1.setText(0, `item-1`);
item1.setText(1, `1-item-1`);
item1.setIcon(1, icon);
const item2 = new QTreeWidgetItem();
item2.setText(0, `item-2`);
item2.setText(1, `1-item-2`);
item2.setIcon(1, icon);
const item3 = new QTreeWidgetItem();
item3.setText(0, `item-3`);
item3.setText(1, `1-item-3`);
item3.setIcon(1, icon);
const item4 = new QTreeWidgetItem();
item4.setText(0, `item-4`);
item4.setText(1, `1-item-4`);
item4.setIcon(1, icon);
const item5 = new QTreeWidgetItem();
item5.setText(0, `item-5`);
item5.setText(1, `1-item-5`);
item5.setIcon(1, icon);
const item6 = new QTreeWidgetItem();
item6.setText(0, `item-6`);
item6.setText(1, `1-item-6`);
item6.setIcon(1, icon);
console.info('item6.icon()=', item6.icon(1));
tree.addTopLevelItem(item1);
tree.insertTopLevelItems(0, [item2, item3]);
tree.addTopLevelItems([item4, item5]);
tree.insertTopLevelItem(2, item6);
// Add children to item1
const c1item1 = new QTreeWidgetItem(item1);
c1item1.setText(0, `c1item1`);
c1item1.setText(1, `c1item2`);
const c1item2 = new QTreeWidgetItem(item1);
c1item2.setText(0, `c1item1`);
c1item2.setText(1, `c1item2`);
const textView = new QLabel();
textView.setObjectName('textView');
textView.setText(`
a
a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
a
`);
sview.layout?.addWidget(textView);
scrollArea.setWidget(sview);
outer.layout?.addWidget(scrollArea);
outer.addEventListener(WidgetEventTypes.Resize, () => {
// console.log('scrollarea min +' + scrollArea.minimumSize().width(), 'X', scrollArea.minimumSize().height());
// console.log('scrollarea size +' + scrollArea.size().width(), 'X', scrollArea.size().height());
});
win.setCentralWidget(outer);
win.show();
(global as any).win = win;
// <Window windowTitle="Hello 👋🏽" minSize={minSize} styleSheet={styleSheet}>
// <View>
// <ScrollArea style="flex: 1; border: 1px solid green;">
// <View style="border:2px solid yellow;">
// <Comp></Comp>
// </View>
// </ScrollArea>
// </View>
// </Window>

View File

@ -67,6 +67,7 @@ export class QMainWindow extends NodeWidget<QMainWindowSignals> {
const centralWidget = this.centralWidget;
this.centralWidget = null;
if (centralWidget) {
centralWidget.setFlexNodeSizeControlled(false);
this.native.takeCentralWidget();
return centralWidget;
}

View File

@ -42,7 +42,6 @@ export class QScrollArea extends QAbstractScrollArea<QScrollAreaSignals> {
super(native);
this.native = native;
this.setNodeParent(parent);
this.setWidgetResizable(true);
}
setAlignment(alignment: AlignmentFlag): void {
this.setProperty('alignment', alignment);
@ -52,9 +51,6 @@ export class QScrollArea extends QAbstractScrollArea<QScrollAreaSignals> {
}
setWidgetResizable(resizable: boolean): void {
this.setProperty('widgetResizable', resizable);
if (this.contentWidget) {
this.contentWidget.setFlexNodeSizeControlled(resizable);
}
}
widgetResizable(): boolean {
return this.property('widgetResizable').toBool();
@ -68,7 +64,6 @@ export class QScrollArea extends QAbstractScrollArea<QScrollAreaSignals> {
setWidget(widget: NodeWidget<any>): void {
this.contentWidget = widget;
this.native.setWidget(widget.native);
this.contentWidget.setFlexNodeSizeControlled(this.widgetResizable());
}
widget(): NodeWidget<any> | null {
if (this.contentWidget) {