다른 기능을 사용하기 위해 여러 개의 누적 창을 만드는 프로그램에서 작업하고 있습니다. 이 창은 별도의 클래스로 만들어집니다. 스택 된 윈도우 중 하나는 여러 개의 도킹을 보유하고 있으며이를 표시하거나 숨기려면 윈도우 메뉴에서 토글 가능하도록하고 싶습니다. 메인 윈도우 클래스의 일부이지만 파일이 크다면이 작업을 수행 할 수 있습니다. 내 문제는 메인 윈도우가 이미 레이아웃을 가지고 있기 때문에 에디터 클래스가 메인 윈도우를 상속받을 때 레이아웃을 표시 할 수없는 것처럼 보일 수 있다는 것이다. 그리고 컴파일러는 여전히 메뉴에 액션을 추가하는 줄에 오류를 던지고있었습니다. 아무도 내가 별도의 클래스에서 이들을 어떻게 유지할 수 있는지에 대한 제안을 가지고 있지만 여전히 mainwindow 클래스의 private 멤버를 사용할 수 있습니다. 고급 도움말에 감사드립니다! 에디터 페이지는 다른보기 상태 레이아웃은 뷰 클래스 헤더 파일의Mainwindows에 액세스하는 적절한 방법 다른 클래스의 개인 변수
EditorPage::EditorPage(QWidget *parent) : QWidget(parent)
{
mdiArea = new QMdiArea;
mdiToolBox = new QToolBox;
QDockWidget *dock = new QDockWidget(tr("SQL Manager"));
//MainWindow::windowMenu->addAction(dock->toggleViewAction());
//MainWindow::windowMenu->addAction(dock->toggleViewAction());
QDockWidget *dock1 = new QDockWidget(tr("SQL Manager"));
QSplitter *splitter = new QSplitter();
splitter->setOrientation(Qt::Vertical);
splitter->addWidget(mdiArea);
splitter->addWidget(dock);
QSplitter *splitter1 = new QSplitter();
splitter1->setOrientation(Qt::Horizontal);
splitter1->addWidget(dock1);
splitter1->addWidget(splitter);
QHBoxLayout *mainLayout = new QHBoxLayout();
mainLayout->addWidget(splitter1);
mainLayout->setSpacing(0);
mainLayout->setMargin(0);
setLayout(mainLayout);
}
파트를 저장하는 뷰 소스 페이지의
MainWindow::MainWindow(QWidget *parent)
{
createActions();
createMenu();
createStatusBar();
createDocks();
createMainWidget();
readSettings();
setWindowTitle("Black Ops Bsuiness Group's ERP System - Version 0.0.0.1");
}
void MainWindow::createMainWidget()
{
contentsIconWidget = new QListWidget();
contentsIconWidget->setViewMode(QListView::IconMode);
contentsIconWidget->setIconSize(QSize(70,70));
contentsIconWidget->setMovement(QListView::Static);
contentsIconWidget->setMaximumWidth(75);
contentsIconWidget->setMinimumWidth(75);
contentsIconWidget->setSpacing(10);
contentsIconWidget->setStyleSheet("QListWidget {background-color:#333; color:#0099FF;}");
mainContentPages = new QStackedWidget();
mainContentPages->addWidget(new HomePage);
mainContentPages->addWidget(new AnalyticsPage);
mainContentPages->addWidget(new EditorPage);
mainContentPages->setStyleSheet("QStackedWidget {border:1px solid #888;}");
setCentralWidget(mainContentPages);
createIcons();
contentsIconWidget->setCurrentRow(0);
QHBoxLayout *hMainLayout = new QHBoxLayout();
hMainLayout->addWidget(contentsIconWidget,0);
hMainLayout->addWidget(mainContentPages,0);
hMainLayout->setSpacing(0);
hMainLayout->setMargin(0);
QFrame *mFrame = new QFrame(this);
mFrame->setLayout(hMainLayout);
setCentralWidget(mFrame);
}
부분이라고 메인 윈도우의
부
class EditorPage : public QWidget
{
public:
EditorPage(QWidget *parent = 0);
private:
QMdiArea *mdiArea;
QToolBox *mdiToolBox;
};
나는 이해 생각합니다. 선창을 만들 때 액션을 만들려고하는 대신 다른 클래스의 선창 모양을 제어하는 기본 창을 만들 때 신호로 액션을 만들어야합니다. 미안하지만 저처럼 보일지에 대한 빠른 예를 보여줄 수 있다고 생각하니? 나는 그런 것을 시도했지만 나는 그것을 작동시키지 못했습니다. 고마워 btw ... 나는 그것을 작동시킬 때 그것을 확인합니다. – Rob
[텍스트 편집기] (http://qt-project.org/doc/qt-4.8/gettingstartedqt.html) 자습서는 맞춤 슬롯을 만들고 연결하는 데 도움이되는 유용한 자료입니다. 슬롯이 에디터 클래스에 있고, 메인 윈도우가 액션 신호 중 하나를 에디터의 슬롯에 연결한다는 점을 제외하면 정확히 필요합니다. – Mat