void moviemanager::setupUserInterface() { mainWindow = new QWidget(this); mainHLayout = new QHBoxLayout(mainWindow); firstVLayout = new QVBoxLayout(mainWindow); secondVLayout = new QVBoxLayout(mainWindow); thirdVLayout = new QVBoxLayout(mainWindow); mainHLayout->addItem(firstVLayout); mainHLayout->addItem(secondVLayout); mainHLayout->addItem(thirdVLayout); //add layouting information here //adding widgets into the firstVLayout //adding searchbar QHBoxLayout* searchHLayout = new QHBoxLayout(mainWindow); firstVLayout->addItem(searchHLayout); searchHLayout->addWidget(new QLabel("Search:", mainWindow)); searchBar = new KLineEdit("", mainWindow); searchHLayout->addWidget(searchBar); searchHLayout->setAlignment(Qt::AlignTop); //searchbar alignment //connecting searchbar return pressed to a slot if(connect(searchBar, SIGNAL(returnPressed(QString)), this, SLOT(slotSearchBarReturnPressed(QString))) == false) { qDebug() << "searchBar connect is not successful"; } //adding klistwidget for displaying movies mainMovieList = new KListWidget(mainWindow); mainMovieList->setSortingEnabled(true); fetchAllMovieList(mainMovieList); firstVLayout->addWidget(mainMovieList); //connecting the mainMovieList signal to a slot if(connect(mainMovieList, SIGNAL(activated(QModelIndex)), this, SLOT(slotMovieClicked(QModelIndex))) == false) { qDebug() << "mainMovieList connect is not successful"; } //adding widgets into secondVLayout secondVLayout->addWidget(new QLabel("<span style='font-size: 20px;'>Movie Details</span>", mainWindow)); QScrollArea * scrollArea = new QScrollArea(mainWindow); //scrollArea->setLayout(); //scrollArea->setAlignment(Qt::AlignBottom); secondVLayout->addWidget(scrollArea); scrollArea->setWidgetResizable(false); //scrollArea->setVerticalScrollBar(new QScrollBar()); middleInnerWidget = new QWidget(mainWindow); //middleInnerWidget->setMaximumHeight(50); scrollArea->setWidget(middleInnerWidget); //secondVLayout->addWidget(middleInnerWidget); middleInnerVLayout = new QVBoxLayout(middleInnerWidget); scrollArea->setLayout(middleInnerVLayout); QLabel* tempTitle = new QLabel("<span style='font-size: 20px;'>Title</span>", middleInnerWidget); tempTitle->setAlignment(Qt::AlignTop); middleInnerVLayout->addWidget(tempTitle); artwork = new QWebView(middleInnerWidget); artwork->load(QUrl("file:///home/sandeep/.moviemanager/tt0000000.jpg")); artwork->setMinimumSize(320,474); artwork->setMaximumSize(320,474); middleInnerVLayout->addWidget(artwork); //adding widgets into thirdVLayout thirdVLayout->addWidget(new QLabel("<span style='font-size: 20px;'>Recommended Movies</span>", mainWindow)); recoMovieList = new KListWidget(mainWindow); recoMovieList->setSortingEnabled(true); fetchRecoMovieList(recoMovieList); thirdVLayout->addWidget(recoMovieList); //connecting the mainMovieList signal to a slot if(connect(recoMovieList, SIGNAL(activated(QModelIndex)), this, SLOT(slotMovieClicked(QModelIndex))) == false) { qDebug() << "recoMovieList connect is not successful"; } setCentralWidget(mainWindow); }
void LogDetailWidget::showEditHistory() { QModelIndex index = ui.aaView->currentIndex(); if(index.row() <0) return; QAbstractItemModel* model = ui.aaView->model(); QString timestamp = model->data(model->index(index.row(), 0), Qt::DisplayRole).toString(); QString compName = model->data(model->index(index.row(), 2), Qt::DisplayRole).toString(); QString type = model->data(model->index(index.row(), 4), Qt::DisplayRole).toString(); QString value = model->data(model->index(index.row(), 5), Qt::DisplayRole).toString(); QWidget *histWidget = new QWidget; histWidget->resize(QSize(800,600)); QVBoxLayout *boxlayout = new QVBoxLayout; QScrollArea* area = new QScrollArea; QGridLayout *gridLayout = new QGridLayout; QLabel* fileLabel = new QLabel; fileLabel->setText("Source Code File: " + compName); gridLayout->addWidget(fileLabel, 0, 0, 1, -1); histWidget->setLayout(boxlayout); boxlayout->addWidget(area); area->setLayout(gridLayout); LogEvent pre_e; bool isFirst = true; int row = 1; for(int i=0; i<logMan.events.size(); i++) { LogEvent e = logMan.events[i]; if(!e.isHasAcc) continue; if(e.acc.parent_name == compName.toStdString() && e.acc.type == type.toStdString()) { if(isFirst) { QLabel* timeLabel = new QLabel; timeLabel->setText(QString::fromStdString(e.timestamp)); QLabel* edit = new QLabel; edit->setText("First Time Open"); gridLayout->addWidget(timeLabel, row, 0, 1, 1); gridLayout->addWidget(edit, row, 1, 1, 1); isFirst = false; } else { QLabel* timeLabel = new QLabel; timeLabel->setText(QString::fromStdString(e.timestamp)); gridLayout->addWidget(timeLabel, row, 0, 1, 1); string s1 = pre_e.acc.value; replaceAll(s1, "\\n", "\n"); replaceAll(s1, "\\t", "\t"); string s2 = e.acc.value; replaceAll(s2, "\\n", "\n"); replaceAll(s2, "\\t", "\t"); QString str1 = QString::fromStdString(s1); QString str2 = QString::fromStdString(s2); diff_match_patch dmp; QList<Diff> res = dmp.diff_main(str1,str2, true); dmp.diff_cleanupSemantic(res); if(res.size() == 1 && res[0].operation == Operation::EQUAL) { QLabel* edit = new QLabel; edit->setText("No Difference"); gridLayout->addWidget(edit, row, 1, 1, 1); } else { QTextEdit* edit = new QTextEdit; edit->setText(dmp.diff_toString(res)); gridLayout->addWidget(edit, row, 1, 1, 1); } } pre_e = e; row++; } } histWidget->show(); }
TextEdit::TextEdit(QWidget *parent) : QMainWindow(parent) { setToolButtonStyle(Qt::ToolButtonFollowStyle); setupFileActions(); setupEditActions(); setupTextActions(); { // QMenu *helpMenu = new QMenu(tr("Help"), this); // menuBar()->addMenu(helpMenu); // helpMenu->addAction(tr("About"), this, SLOT(about())); // helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt())); } textEdit = new QTextEdit(this); ////////////////////////////////////////////////// connect(textEdit, SIGNAL(currentCharFormatChanged(QTextCharFormat)), this, SLOT(currentCharFormatChanged(QTextCharFormat))); connect(textEdit, SIGNAL(cursorPositionChanged()), this, SLOT(cursorPositionChanged())); /////////// //setCentralWidget(textEdit); //blank=new Blank(this); //setCentralWidget(blank); //create a transparent canvas and put it on the top of textEdit image =new MyCanvas(900,800,this); textEdit->setFixedSize(QSize(800,800)); textEdit->setBackgroundRole(QPalette::Light); //scrollArea对象的背景色设为Dark image->setFixedSize(QSize(800,800)); image->setStyleSheet(QString::fromUtf8("border:1px solid #000000;")); QScrollArea* scrollArea = new QScrollArea; scrollArea->setFixedSize(QSize(1800,900)); //scrollArea->setWidget(image); //将画布添加到scrollArea中 scrollArea->setBackgroundRole(QPalette::Light); //scrollArea对象的背景色设为Dark //scrollArea->setBackgroundColor(QColor::white); // QStackedLayout *stackedLayout = new QStackedLayout; // stackedLayout->addWidget(image); // stackedLayout->addWidget(textEdit); // stackedLayout->setStackingMode(QStackedLayout::StackAll); QHBoxLayout* hLayout=new QHBoxLayout(); hLayout->addWidget(textEdit); hLayout->addWidget(image); // scrollArea->setLayout(stackedLayout); scrollArea->setLayout(hLayout); //scrollArea->setGeometry(QRect(50,50,800,800)); setCentralWidget(scrollArea); //将scrollArea加入到主窗口的中心区new QPainter(this); scrollArea->setAlignment(Qt::AlignHCenter); //after canvas handle the mouse-drag event, emit it to the edittext for farther handling connect(image,SIGNAL(mouseMoveSig(QMouseEvent*)),this,SLOT(onMouseMove(QMouseEvent*))); //connect(image,SIGNAL(mouseMoveSig(QMouseEvent*)),textEdit,SLOT(mouseMoveEvent(QMouseEvent*))); //connect(image,SIGNAL(mouseMoveSig(QMouseEvent*)),textEdit,SLOT(cursorPositionChanged(QMouseEvent*))); //connect(this,SIGNAL(mouseMoveSig(QMouseEvent*)),image,SLOT(mouseMoveSlot(QMouseEvent*))); //connect(textEdit,SIGNAL(mouseMoveEvent(QMouseEvent*)),image,SLOT(mouseMoveSlot(QMouseEvent*))); // textEdit->setFocus(); setCurrentFileName(QString()); fontChanged(textEdit->font()); colorChanged(textEdit->textColor()); alignmentChanged(textEdit->alignment()); connect(textEdit->document(), SIGNAL(modificationChanged(bool)), actionSave, SLOT(setEnabled(bool))); connect(textEdit->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); connect(textEdit->document(), SIGNAL(undoAvailable(bool)), actionUndo, SLOT(setEnabled(bool))); connect(textEdit->document(), SIGNAL(redoAvailable(bool)), actionRedo, SLOT(setEnabled(bool))); setWindowModified(textEdit->document()->isModified()); actionSave->setEnabled(textEdit->document()->isModified()); actionUndo->setEnabled(textEdit->document()->isUndoAvailable()); actionRedo->setEnabled(textEdit->document()->isRedoAvailable()); connect(actionUndo, SIGNAL(triggered()), textEdit, SLOT(undo())); connect(actionRedo, SIGNAL(triggered()), textEdit, SLOT(redo())); actionCut->setEnabled(false); actionCopy->setEnabled(false); connect(actionCut, SIGNAL(triggered()), textEdit, SLOT(cut())); connect(actionCopy, SIGNAL(triggered()), textEdit, SLOT(copy())); connect(actionPaste, SIGNAL(triggered()), textEdit, SLOT(paste())); connect(textEdit, SIGNAL(copyAvailable(bool)), actionCut, SLOT(setEnabled(bool))); connect(textEdit, SIGNAL(copyAvailable(bool)), actionCopy, SLOT(setEnabled(bool))); #ifndef QT_NO_CLIPBOARD connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged())); #endif //QString initialFile = ":/data/example.html"; QString initialFile = ":/data/test.txt"; const QStringList args = QCoreApplication::arguments(); if (args.count() == 2) initialFile = args.at(1); if (!load(initialFile)) fileNew(); }