nodeguy/src/lib/QtWidgets/QCheckBox.ts
2022-05-11 22:30:42 +02:00

58 lines
1.7 KiB
TypeScript

import addon from '../utils/addon';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
import { checkIfNativeElement } from '../utils/helpers';
import { CheckState } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
/**
> Create and control checkbox.
* **This class is a JS wrapper around Qt's [QCheckBox class](https://doc.qt.io/qt-5/qcheckbox.html)**
A `QCheckBox` provides ability to add and manipulate native checkbox widgets.
### Example
```javascript
const { QCheckBox } = require("@nodegui/nodegui");
const checkbox = new QCheckBox();
checkbox.setText("Hello");
```
*/
export class QCheckBox extends QAbstractButton<QCheckBoxSignals> {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QCheckBox(parent.native);
} else {
native = new addon.QCheckBox();
}
super(native);
}
setTristate(y = true): void {
this.setProperty('tristate', y);
}
isTristate(): boolean {
return this.property('tristate').toBool();
}
checkState(): CheckState {
return this.native.checkState();
}
setCheckState(state: CheckState): void {
this.native.setCheckState(state);
}
}
wrapperCache.registerWrapper('QCheckBoxWrap', QCheckBox);
export interface QCheckBoxSignals extends QAbstractButtonSignals {
stateChanged: (state: number) => void;
}