I tested. not work.
only check itself _visible doesn't enough. because, itself's _visible can be true, but it's parent's (event parent's  parent's ...) _visible can be false. 
for a simple workaround, check up to 5 levels parents is enough must most UI cases.

	int upLevel = 0;
	auto widget = this;
	while (widget != nullptr and upLevel < 5) {
		if (!(widget->isEnabled() && widget->isVisible()))
			return false;
		widget = widget->getWidgetParent();
		upLevel++;
	}