obs_study - 8BitsCoding/RobotMentor GitHub Wiki
source 클릭 처리
void OBSBasic::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
// ...
case 44: _t->SelectSceneItem // ...
source 더블 클릭 처리
SourceTreeItem는 QWdiget이다.
void SourceTreeItem::mouseDoubleClickEvent(QMouseEvent *event)
{
// ...
// 소스 정보는 이렇게 받아온다.
obs_source_t *source = obs_sceneitem_get_source(sceneitem);
// 윈도우 전시는 이렇게
main->CreatePropertiesWindow(source);
obs_source_t *obs_sceneitem_get_source(const obs_sceneitem_t *item)
{
return item ? item->source : NULL;
}
sceneitem는 SourceTreeItem의 생성자에서 선언
SourceTreeItem::SourceTreeItem(SourceTree *tree_, OBSSceneItem sceneitem_)
: tree(tree_), sceneitem(sceneitem_)
의 생성은 아래의 경우
- 초기 프로그램 구동 시
void SourceTree::ResetWidgets()
{
OBSScene scene = GetCurrentScene();
SourceTreeModel *stm = GetStm();
stm->UpdateGroupState(false);
for (int i = 0; i < stm->items.count(); i++) {
QModelIndex index = stm->createIndex(i, 0, nullptr);
setIndexWidget(index, new SourceTreeItem(this, stm->items[i]));
}
}
- 소스를 추가
void SourceTree::UpdateWidget(const QModelIndex &idx, obs_sceneitem_t *item)
{
setIndexWidget(idx, new SourceTreeItem(this, item));
}
OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
// ...
//windowSplitter->addWidget(view);
void OBSPropertiesView::ReloadProperties()
{
// ...
void OBSPropertiesView::RefreshProperties()
{
// ...
while (property) {
AddProperty(property, layout);
const char *name = obs_property_name(property);
// 이상한거 나옴
obs_property_next(&property);
}
static void AddComboItem(QComboBox *combo, obs_property_t *prop,
obs_combo_format format, size_t idx)
{
// AddComboItem에 윈도우 창 이름 뜸