일부 경우에도 표시해야하는 정보/알림 위젯이 있습니다. 내 아이디어는 왼쪽 상단 모서리에 숨겨진 필요한 위젯을 표시하는 것입니다. 문제는 내가 간단한 위젯을 놓고 보여 주면, 모든 것이 오른쪽으로 옮겨 질 것이고, 내가 원하는 것은 위젯을 그 영역에있는 것 위에 보여 주면된다. (거기에있는 것을 숨길 것이지만 괜찮다). 정보 위젯이 다른 크기이고 다른 위젯이 있으므로 스택 위젯을 사용할 수 없습니다. 플로팅 위젯을 만들어서 해당 영역으로 옮기면 메인 윈도우가 움직이면 움직이지 않을 것입니다. 어떻게 할 수 있습니까?다른 위젯 위에 Qt 위젯이 표시됩니다.
답변
편집을 취소해야하도록 구성 할 수 만들고 그 중 간부 한 QDialog
에서
봐 : 죄송합니다 나는 QMessageBos는, 참조 의미 코드 아래
QMessageBox error_message(QMessageBox::Icon::Critical, "Title of the window","Some Text about the error to show the user", QMessageBox::StandardButtons(QMessageBox::Yes | QMessageBox::Cancel), this);
error_message.exec();
그것은 오류가 아닙니다. 어떤 동작에 의해 트리거 된 객체에 대한 몇 가지 추가 정보입니다 (예 : 일부 축에 대한 회전 각도). 따라서 모달 대화 상자를 사용할 수 없습니다 (기본 위젯에서 분리하여 사용하지 않는 것을 선호합니다). 그 위젯의 정보는 그 순간 (또는 다른 행동이있을 때까지) 사용자에게 유용 할 수도 있고 그렇지 않을 수도 있습니다 (이 경우 그는 단지 닫거나 숨길 것입니다). – Dainius
Visual Studio를 사용하는 경우 도구 상자가 오른쪽 (또는 왼쪽)에 자동 숨김 기능이 있으면 비슷한 것을 볼 수 있습니다. 기존 레이아웃을 덮어 쓰지만 영향을주지는 않습니다. – Dainius
당신은 단지 그것을 만들 다음 인 QDialog를 사용하고 비 모달에 대한 플래그를 설정하고 항상 상단에, 또 다른 숨겨진 위젯을 추가하고 필요할 때 보여 것보다 그것을 할 수있는 더 좋은 방법이 – AngryDuck
위젯을 만들어서 바로 배치하십시오. 위젯 위치가 레이아웃에 의해 관리되므로 UI를 사용하여 위젯을 배치하지 마십시오.
편집 : 대화 상자가 초기화 된 후에 위젯을 만들어야합니다. 이것에 신경 쓰지 않으면 위젯이 하단에 삽입됩니다.
class Dialog : public QDialog
{
Q_OBJECT
std::unique_ptr<Ui::Dialog> _ui;
QWidget* _widgetOnTheTop;
public:
Dialog(QWidget* parent)
: QDialog(parent), _ui(new Ui::Dialog)
{
_ui->setupUi(this);
_widgetOnTheTop = new QPushButton(this);
_widgetOnTheTop->setGeometry(10,10,100,35);
_widgetOnTheTop->show();
}
};
위젯을 부모로 설정하고 레이아웃에는 추가하지 않습니다. 그게 효과가 있니? – thuga
나는 그것을, 고마워하지 않았다. – Dainius