void MainWindow::initTextEditor() { //create tab QWidget *tab = new QWidget(this); QString objName = QString("tab"), fileName = ""; tab->setObjectName(objName); //create layout QHBoxLayout *layout = new QHBoxLayout(tab); layout->setSpacing(0); layout->setContentsMargins(11, 11, 11, 11); layout->setObjectName(QString("horizontalLayout")); layout->setContentsMargins(0, 0, 0, 0); //create textedit QTextEdit *edit = new QTextEdit(tab); edit->setObjectName(QString("textEdit")); layout->addWidget(edit); ui->tabs->addWidget(tab); //slot and signal //font change signal connect(edit, SIGNAL(currentCharFormatChanged(QTextCharFormat)), this, SLOT(currentCharFormatChanged(QTextCharFormat))); connect(edit, SIGNAL(cursorPositionChanged()), this, SLOT(cursorPositionChanged())); //modification connect(edit->document(), SIGNAL(modificationChanged(bool)), ui->actionSave, SLOT(setEnabled(bool))); connect(edit->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool))); connect(edit->document(), SIGNAL(undoAvailable(bool)), ui->actionUndo, SLOT(setEnabled(bool))); connect(edit->document(), SIGNAL(redoAvailable(bool)), ui->actionRedo, SLOT(setEnabled(bool))); //redo undo connect(ui->actionUndo, SIGNAL(triggered()), edit, SLOT(undo())); connect(ui->actionRedo, SIGNAL(triggered()), edit, SLOT(redo())); //cut copy paste connect(ui->actionCut, SIGNAL(triggered()), edit, SLOT(cut())); connect(ui->actionCopy, SIGNAL(triggered()), edit, SLOT(copy())); connect(ui->actionPaste, SIGNAL(triggered()), edit, SLOT(paste())); connect(edit, SIGNAL(copyAvailable(bool)), ui->actionCut, SLOT(setEnabled(bool))); connect(edit, SIGNAL(copyAvailable(bool)), ui->actionCopy, SLOT(setEnabled(bool))); textEditor.tab = tab; textEditor.editor = edit; textEditor.layout = layout; textEditor.objName = objName; textEditor.fileName = fileName; }
void ItemHandlerMultiLine::Handle (const QDomElement& item, QWidget *pwidget) { QGridLayout *lay = qobject_cast<QGridLayout*> (pwidget->layout ()); QLabel *label = new QLabel (XSD_->GetLabel (item)); label->setWordWrap (false); const QVariant& value = XSD_->GetValue (item); QTextEdit *edit = new QTextEdit (); XSD_->SetTooltip (edit, item); edit->setPlainText (value.toStringList ().join ("\n")); edit->setObjectName (item.attribute ("property")); edit->setMinimumWidth (QApplication::fontMetrics () .width ("thisismaybeadefaultsetting")); connect (edit, SIGNAL (textChanged ()), this, SLOT (updatePreferences ())); edit->setProperty ("ItemHandler", QVariant::fromValue<QObject*> (this)); edit->setProperty ("SearchTerms", label->text ()); int row = lay->rowCount (); QString pos = item.attribute ("position"); if (pos == "bottom") { lay->addWidget (label, row, 0, Qt::AlignLeft); lay->addWidget (edit, row + 1, 0); } else if (pos == "right") { lay->addWidget (label, row, 0, Qt::AlignRight | Qt::AlignTop); lay->addWidget (edit, row, 1); } else if (pos == "left") { lay->addWidget (label, row, 1, Qt::AlignLeft | Qt::AlignTop); lay->addWidget (edit, row, 0); } else if (pos == "top") { lay->addWidget (edit, row, 0); lay->addWidget (label, row + 1, 0, Qt::AlignLeft); } else { lay->addWidget (label, row, 0, Qt::AlignRight | Qt::AlignTop); lay->addWidget (edit, row, 1); } lay->setContentsMargins (2, 2, 2, 2); }
void Listening::createNewTab(QString name) { QWidget *widget = new QWidget(); widget->setObjectName(QStringLiteral("TAB_TOTO")); QVBoxLayout *vertLayout = new QVBoxLayout(widget); vertLayout->setSpacing(6); vertLayout->setContentsMargins(11, 11, 11, 11); vertLayout->setObjectName(QStringLiteral("verticalLayout_14")); QTextEdit *textEdit = new QTextEdit(widget); textEdit->setObjectName(QStringLiteral("textEdit2")); textEdit->setTextInteractionFlags(Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse); vertLayout->addWidget(textEdit); widget->show(); this->mainWindow->getUi()->QTabWidget_onglets->addTab(widget, name); }
GenericStep::GenericStep( bool isInput_in, QString ID_in, vector<StepGenericElement*> elements_in, QWidget *parent) : QWidget(parent) { ui.setupUi(this); inputStep = isInput_in; ID = ID_in; QVBoxLayout * mainLayout = new QVBoxLayout(); StepGenericElement * currentElement; //Loop through the elements for(int i = 0; i<elements_in.size(); i++){ currentElement = elements_in.at(i); if(currentElement != 0){ //Check the type of element switch(currentElement->getElementName()){ case TEXT: Text * textElement = dynamic_cast<Text*>(currentElement); //Generating area where to insert the text QScrollArea * scrollArea = new QScrollArea(); scrollArea->setWidgetResizable(true); //if(textElement->getWidth() != 0) //scrollArea->setFixedWidth(textElement->getWidth()); //if(textElement->getRows() != 0) //scrollArea->setFixedHeight(textElement->getRows()); QLabel *description = new QLabel(textElement->getContent(), this); description->setWordWrap(true); description->setAlignment(Qt::AlignJustify); scrollArea->setWidget(description); mainLayout->addWidget(scrollArea); break; case INPUTFIELD: Input * inputElement = dynamic_cast<Input*>(currentElement); //Generating a gridlayout where to put both the label and the field QGridLayout * inputContainerLayout = new QGridLayout(this); QWidget * inputContainer = new QWidget(this); QLabel * inputLabel = new QLabel(inputElement->getLabel(),this); QTextEdit * inputText = new QTextEdit(inputElement->getContent(),this); inputText->setObjectName(inputElement->getId()); inputElements.push_back(inputText); if(inputElement->getWidth() != 0) inputText->setFixedHeight(inputElement->getWidth()); if(inputElement->getRows() != 0) inputText->setFixedHeight(inputElement->getRows()*20); switch(inputElement->getPos()){ case UP: inputContainerLayout->addWidget(inputLabel,0,0); inputContainerLayout->addWidget(inputText,1,0); break; case DOWN: inputContainerLayout->addWidget(inputLabel,1,0); inputContainerLayout->addWidget(inputText,0,0); break; case LEFT: inputContainerLayout->addWidget(inputLabel,0,0); inputContainerLayout->addWidget(inputText,0,1); break; case RIGHT: inputContainerLayout->addWidget(inputLabel,0,1); inputContainerLayout->addWidget(inputText,0,0); break; default : break; } inputContainer->setLayout(inputContainerLayout); inputContainerLayout->setVerticalSpacing(1); mainLayout->addWidget(inputContainer); break; case IMAGE: /* TODO: Given an Image element, this part of the code should * renderize a box (as big as width and height attributes say) * containing the image. The base64 encoding of the image is given * by the content of the element. Probably the most part of the times * this functionality won't be required. The important thing to do * is to renderize a button to snap the photo. */ break; case RECORDING: /* TODO: * The stuff to do is exactly the same then the one of the image. The only * differenze is that you have to renderize a "record","play","pause" button * to interact with the mobile recorder. */ break; case SELECT: Select * selectElement = dynamic_cast<Select*>(currentElement); QButtonGroup * radioGroup = new QButtonGroup(); radioGroup->setExclusive(selectElement->isMutex()); for(int j = 0; j < selectElement->getOptions().size(); j++){ Select::Option optionElement = selectElement->getOption(j); QRadioButton * option = new QRadioButton(optionElement.getContent(), this); option->setChecked(optionElement.isSelected()); //The object name is eventually used to retrive the object reference //(During the saving process). //So the ID in the configuration file MUST be unique. option->setObjectName(optionElement.getId()); inputElements.push_back(option); radioGroup->addButton(option); mainLayout->addWidget(option); } break; default: //TODO: handle exception break; } } } this->setLayout(mainLayout); this->resize(400,600); }
QWidget* WidgetStyle::createWidget(const QString& name) { if(name == "CheckBox") { QCheckBox* box = new QCheckBox("CheckBox"); box->setObjectName("CheckBox"); return setLayoutWidget({ box }, { 100, 30 }); } else if(name == "ComboBox") { QComboBox* box = new QComboBox; box->addItem("Item1"); box->addItem("Item3"); box->addItem("Item3"); box->setObjectName("ComboBox"); return setLayoutWidget({ box }, { 70, 30 }); } else if(name == "DateEdit") { QDateEdit* date = new QDateEdit; date->setObjectName("DateEdit"); return setLayoutWidget({ date }, { 110, 40 }); } else if(name == "DateTimeEdit") { QDateTimeEdit* date = new QDateTimeEdit; date->setObjectName("DateTimeEdit"); return setLayoutWidget({ date }, { 160, 30 }); } else if(name == "Dialog") { QDialog* dialog = new QDialog; dialog->setObjectName("Dialog"); return setLayoutWidget({ dialog }, { 160, 110 }); } else if(name == "DockWidget") //? { QDockWidget* widget = new QDockWidget; widget->setObjectName("DockWidget"); widget->resize(61, 22); return widget; } else if(name == "DoubleSpinBox") { QDoubleSpinBox* box = new QDoubleSpinBox; box->setObjectName("DoubleSpinBox"); return setLayoutWidget({ box }, { 90, 40 }); } else if(name == "Frame") //?? { QFrame* frame = new QFrame; frame->setObjectName("Frame"); frame->resize(150, 100); return frame; } else if(name == "GroupBox") { QGroupBox* box = new QGroupBox("GroupBox"); box->setObjectName("GroupBox"); return setLayoutWidget({ box }, { 160, 110 }); } else if(name == "Label") { QLabel* label = new QLabel("Label"); label->setObjectName("Label"); return setLayoutWidget({ label }, { 40, 20}); } else if(name == "LineEdit") { QLineEdit* line = new QLineEdit; line->setObjectName("LineEdit"); return setLayoutWidget({ line }, { 30, 30 }); } else if(name == "ListView") //?? { QListView* view = new QListView; view->setObjectName("ListView"); view->resize(71, 71); return view; } else if(name == "ListWidget") { QListWidget* list = new QListWidget; list->setObjectName("ListWidget"); for(int i = 0; i < 20; i++) list->addItem(QString("Item %1").arg(i)); return setLayoutWidget({ list }, { 80, 80 }); } else if(name == "MainWindow") { QMainWindow* window = new QMainWindow; window->setObjectName("MainWindow"); return setLayoutWidget({ window }, { 160, 110 }); } else if(name == "Menu") { QMenu* parentMenu = new QMenu; parentMenu->setObjectName("Menu"); parentMenu->addMenu("Menu1"); QMenu* menu1 = parentMenu->addMenu("Menu2"); menu1->addMenu("Menu1"); menu1->addMenu("Menu2"); parentMenu->addSeparator(); parentMenu->addMenu("Menu3"); return setLayoutWidget({ parentMenu }, { 160, 110 }); } else if(name == "MenuBar") { QMenuBar* bar = new QMenuBar; bar->setObjectName("QMenuBar"); QMenu* menu1 = bar->addMenu("MenuBar1"); menu1->addMenu("Menu1"); menu1->addSeparator(); menu1->addMenu("Menu2"); QMenu* menu2 = bar->addMenu("MenuBar2"); menu2->addMenu("Menu1"); menu2->addSeparator(); menu2->addMenu("Menu2"); QMenu* menu3 = bar->addMenu("MenuBar3"); menu3->addMenu("Menu1"); menu3->addSeparator(); menu3->addMenu("Menu2"); return setLayoutWidget({ bar }, { 280, 60 }); } else if(name == "ProgressBar") { QProgressBar* bar = new QProgressBar; bar->setObjectName("ProgressBar"); bar->setRange(0, 100); bar->setValue(0); QTimer* timer = new QTimer(bar); this->connect(timer, &QTimer::timeout, this, [bar]() { if(bar->value() == 100) bar->setValue(0); else bar->setValue(bar->value() + 1); }); timer->start(100); return setLayoutWidget({ bar }, { 110, 30 }); } else if(name == "PushButton") { QPushButton* button = new QPushButton("PushButton"); button->setObjectName("PushButton"); return setLayoutWidget({ button }, { 125, 30 }); } else if(name == "RadioButton") { QRadioButton* button = new QRadioButton("RadioButton"); button->setObjectName("RadioButton"); return setLayoutWidget({ button }, { 125, 30 }); } else if(name == "ScrollBar") { QScrollBar* barH = new QScrollBar(Qt::Horizontal); QScrollBar* barV = new QScrollBar(Qt::Vertical); barH->setObjectName("ScrollBarH"); barV->setObjectName("ScrollBarV"); return setLayoutWidget({ barH, barV }, { 200, 100 }); } else if(name == "Slider") { QSlider* sliderH = new QSlider(Qt::Horizontal); QSlider* sliderV = new QSlider(Qt::Vertical); sliderH->setObjectName("SliderH"); sliderV->setObjectName("SliderV"); return setLayoutWidget({ sliderH, sliderV }, { 200, 100 }); } else if(name == "SpinBox") { QSpinBox* spinBox = new QSpinBox; spinBox->setObjectName("SpinBox"); return setLayoutWidget({ spinBox }, { 60, 35 }); } else if(name == "Splitter") { QSplitter* splitterV = new QSplitter(Qt::Vertical); QSplitter* splitterH = new QSplitter(Qt::Horizontal); splitterV->setObjectName("SplitterV"); splitterH->setObjectName("SplitterH"); splitterV->addWidget(new QPushButton("PushButton1")); splitterV->addWidget(new QPushButton("PushButton2")); splitterH->addWidget(splitterV); splitterH->addWidget(new QPushButton("PushButton3")); return setLayoutWidget({ splitterH }, { 250, 110 }); } else if(name == "TabWidget") { QTabWidget* tab = new QTabWidget; tab->addTab(new QWidget, "Widget1"); tab->addTab(new QWidget, "Widget2"); tab->addTab(new QWidget, "Widget3"); tab->setObjectName("TabWidget"); return setLayoutWidget({ tab }, { 210, 110 }); } else if(name == "TableView") //? { QTableView* view = new QTableView; view->setObjectName("TableView"); view->resize(200, 100); return view; } else if(name == "TableWidget") { const int n = 100; QStringList list = { "one", "two", "three" }; QTableWidget* table = new QTableWidget(n, n); table->setObjectName("TableWidget"); table->setHorizontalHeaderLabels(list); table->setVerticalHeaderLabels(list); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) table->setItem(i, j, new QTableWidgetItem(QString("%1, %2").arg(i).arg(j))); return setLayoutWidget({ table }, { 210, 110 }); } else if(name == "TextEdit") { QTextEdit* text = new QTextEdit; text->setObjectName("TextEdit"); return setLayoutWidget({ text }, { 80, 80 }); } else if(name == "TimeEdit") { QTimeEdit* time = new QTimeEdit; time->setObjectName("TimeEdit"); return setLayoutWidget({ time }, { 80, 80 }); } else if(name == "ToolButton") { QToolButton* button = new QToolButton; button->setText("ToolButton"); button->setObjectName("ToolButton"); return setLayoutWidget({ button }, { 95, 25 }); } else if(name == "ToolBox") { QToolBox* box = new QToolBox; box->addItem(new QWidget, "Widget1"); box->addItem(new QWidget, "Widget2"); box->addItem(new QWidget, "Widget3"); box->setObjectName("ToolBox"); return setLayoutWidget({ box }, { 110, 180 }); } else if(name == "TreeView") //? { QTreeView* tree = new QTreeView; tree->setObjectName("TreeView"); tree->resize(200, 100); return tree; } else if(name == "TreeWidget") { QTreeWidget* tree = new QTreeWidget; tree->setObjectName("TreeWidget"); tree->setHeaderLabels({ "Folders", "Used Space" }); QTreeWidgetItem* item = new QTreeWidgetItem(tree); item->setText(0, "Local Disk"); for(int i = 1; i < 20; i++) { QTreeWidgetItem* dir = new QTreeWidgetItem(item); dir->setText(0, "Directory" + QString::number(i)); dir->setText(1, QString::number(i) + "MB"); } tree->setItemExpanded(item, true); return setLayoutWidget({ tree }, { 210, 110 }); } else if(name == "Widget") { QWidget* widget = new QWidget; widget->setObjectName("Widget"); return setLayoutWidget({ widget }, { 210, 110 }); } return nullptr; }
static QList<QWidget*> getFormWidgets(QList<FormField> formFields, const QObject *receiver) { QList<QWidget*> formWidgets; for (int i = 0; i < formFields.size(); ++i) { Poppler::FormField *formField = formFields.at(i).field; if (formField->type() == Poppler::FormField::FormText) { Poppler::FormFieldText *formFieldText = static_cast<Poppler::FormFieldText*>(formField); switch (formFieldText->textType()) { case Poppler::FormFieldText::FileSelect: { // TODO replace this by a file selection widget QLineEdit *lineEdit = new QLineEdit; lineEdit->setText(formFieldText->text()); lineEdit->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(lineEdit, SIGNAL(textEdited(QString)), receiver, SLOT(slotSetFormData(QString))); formWidgets << lineEdit; } break; case Poppler::FormFieldText::Multiline: { QTextEdit *textEdit = new QTextEdit; textEdit->setText(formFieldText->text()); textEdit->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(textEdit, SIGNAL(textChanged()), receiver, SLOT(slotSetFormData())); formWidgets << textEdit; } break; case Poppler::FormFieldText::Normal: default: { QLineEdit *lineEdit = new QLineEdit; lineEdit->setText(formFieldText->text()); lineEdit->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(lineEdit, SIGNAL(textEdited(QString)), receiver, SLOT(slotSetFormData(QString))); formWidgets << lineEdit; } break; } } else if (formField->type() == Poppler::FormField::FormButton) { Poppler::FormFieldButton *formFieldButton = static_cast<Poppler::FormFieldButton*>(formField); switch (formFieldButton->buttonType()) { case Poppler::FormFieldButton::CheckBox: { QCheckBox *checkBox = new QCheckBox; // checkBox->setText(formFieldButton->caption()); checkBox->setChecked(formFieldButton->state()); checkBox->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(checkBox, SIGNAL(toggled(bool)), receiver, SLOT(slotSetFormData(bool))); formWidgets << checkBox; } break; case Poppler::FormFieldButton::Radio: { QRadioButton *radioButton = new QRadioButton; radioButton->setText(formFieldButton->caption()); radioButton->setChecked(formFieldButton->state()); radioButton->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(radioButton, SIGNAL(toggled(bool)), receiver, SLOT(slotSetFormData(bool))); formWidgets << radioButton; } break; case Poppler::FormFieldButton::Push: default: { QPushButton *pushButton = new QPushButton; pushButton->setText(formFieldButton->caption()); pushButton->setChecked(formFieldButton->state()); pushButton->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(pushButton, SIGNAL(toggled(bool)), receiver, SLOT(slotSetFormData(bool))); formWidgets << pushButton; } break; } } else if (formField->type() == Poppler::FormField::FormChoice) { Poppler::FormFieldChoice *formFieldChoice = static_cast<Poppler::FormFieldChoice*>(formField); switch (formFieldChoice->choiceType()) { case Poppler::FormFieldChoice::ComboBox: { QComboBox *comboBox = new QComboBox; comboBox->addItems(formFieldChoice->choices()); comboBox->setEditable(formFieldChoice->isEditable()); comboBox->setCurrentIndex(formFieldChoice->currentChoices().at(0)); comboBox->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(comboBox, SIGNAL(currentIndexChanged(int)), receiver, SLOT(slotSetFormData(int))); formWidgets << comboBox; } break; case Poppler::FormFieldChoice::ListBox: default: { QListWidget *listWidget = new QListWidget; listWidget->addItems(formFieldChoice->choices()); if (formFieldChoice->isEditable()) { for (int j = 0; j < listWidget->count(); ++j) listWidget->item(j)->setFlags(listWidget->item(j)->flags() | Qt::ItemIsEditable); } else { for (int j = 0; j < listWidget->count(); ++j) listWidget->item(j)->setFlags(listWidget->item(j)->flags() & ~Qt::ItemIsEditable); } QList<int> currentChoices = formFieldChoice->currentChoices(); for (int j = 0; j < currentChoices.size(); ++j) listWidget->item(currentChoices.at(j))->setSelected(true); listWidget->setObjectName(QLatin1String("PageItem::formField") + QString::number(i)); QObject::connect(listWidget, SIGNAL(itemSelectionChanged()), receiver, SLOT(slotSetFormData())); formWidgets << listWidget; } break; } } else if (formField->type() == Poppler::FormField::FormSignature) { // TODO formWidgets << new QWidget; } else // make sure that m_formWidgets.at(i) corresponds to m_formFields.at(i) formWidgets << new QWidget; } return formWidgets; }