小编Wyl*_*SG.的帖子

如何将QTreeWidget中的列调整为所需的最小空间

我是学生程序员,我正在使用Qt为工作构建GUI界面.我有一个QTreeWidget共有8列.需要输入到这些列中的每一列的输入相当小.在这方面,我试图找到一种方法来将所有列重新调整到所需的最小空间.很像当你点击分隔线时执行的动作.我查看了几个网站和Qt文档,但没有找到解决方案.查看文档后,似乎有很多方法可以做到这一点,但我不能让一个工作.我开始认为我需要在某处启用/禁用某些东西.这就像我写入构建函数的更改一样(此函数清除表格;从我的向量中读取数据,在表格​​中显示某些数据,然后假设将标题/列重新调整到足够大小以适应甚至没有应用列的内容.我尝试了以下但没有任何变化:

        ui->treeWidgetInjections->setColumnWidth(i, minimumWidth());
        ui->treeWidgetInjections->resizeColumnToContents(i);
        ui->treeWidgetInjections->header()->ResizeToContents;
        ui->treeWidgetInjections->header()->resizeSection(i, minimumWidth());
Run Code Online (Sandbox Code Playgroud)

所有这些都在我的构建函数的末尾(删除了不相关的信息):

ui->treeWidgetInjections->clear();
    for (int i=0; i < qTreeInjectionData.size(); i++)
        {
            //fill Qtree with items;
            //fill QTree items with data;
            //re size function here;
        }
Run Code Online (Sandbox Code Playgroud)

请留下富有成效的反馈,因为我只对学习和克服这一挑战感兴趣.提前致谢!

c++ qt header qtreewidget

10
推荐指数
2
解决办法
2万
查看次数

修改QFileDialog :: getOpenFileName以获得额外的下拉列表

我是一名学生程序员,使用Qt为我的公司建立一个读者表.这个读者既是编辑又是转换器.它读入.i文件允许对文本文档进行表格编辑,然后输出.scf文件,该文件本质上是一个分隔值文件,堆叠在用标题构建的图例下.我离题...基本上导入的文件格式很难扫描和读入(大多数是不可能的)所以我想要修改打开的文件preBuilt QFileDialog以包含一个额外的下拉菜单,当选择较旧的文件类型来声明他们的模板标题.

当用户选择.i扩展文件(选项2文件类型)时,我想启用一个额外的下拉菜单,以允许用户选择它是哪种类型的.i文件(模板选择).这样我就不必处理上帝知道了多少小时试图找出一种方法来将每个不同类型的所有标题索引到表中.目前我的importFile函数使用以下方法调用对话框:

QString fileLocation = QFileDialog::getOpenFileName(this,("Open File"), "", ("Simulation Configuration File(*.scf);;Input Files(*.prp *.sze *.i *.I *.tab *.inp *.tbl)")); //launches File Selector
Run Code Online (Sandbox Code Playgroud)

我一直在引用QFileDialog文档来尝试找到我需要的解决方案但却无济于事.感谢您阅读我的帖子,并提前感谢您可以给予的任何方向.

更新于2012年3月16日; 首先,我要感谢Masci对此事的初步支持.下面是我收到的连接语句以及我收到的错误.

//Declared data type
    QFileDialog openFile;
    QComboBox comboBoxTemplateSelector;
    connect(openFile, SIGNAL(currentChanged(const &QString)), this, SLOT(checkTemplateSelected()));
    openFile.layout()->addWidget(comboBoxTemplateSelector);
Run Code Online (Sandbox Code Playgroud)

编译错误

我也注意到它不喜欢我将QComboBox添加到修改后的对话框布局的方式(这是第二个错误).我真的希望我在这里做一些愚蠢的事情,这是一个很容易克服的任务.

响应tmpearce的评论,我的标题代码;

#include <QWidget>
namespace Ui {
class ReaderTable;
}
class ReaderTable : public QWidget
{
    Q_OBJECT
public:
    explicit ReaderTable(QWidget *parent = 0);
    ~ReaderTable();
public slots:
    void checkTemplateSelected();
    void importFile();
    void saveFile();
private:
    Ui::ReaderTable *ui;
};
Run Code Online (Sandbox Code Playgroud)

感谢您提前阅读并感谢您对此挑战的任何贡献!

c++ user-interface qt qfiledialog

6
推荐指数
1
解决办法
3775
查看次数

多个语句之间

我是一名正在学习SQL课程的学生开发人员.我目前正在尝试从表中检索几组行的总和.我是SQL开发的新手,我不太清楚以下场景中的问题是什么.我有一个大表,我想从中选择特定行,然后添加余额列.

以下将不会在结果中显示任何数据,我不太清楚为什么.我有一种预感,即每个表只能使用一次声明,但也许我错了?

Select Description, SUM(Balance) AS Total_Balance
FROM Chart_Of_Accounts
WHERE (Account BETWEEN ('400401') AND ('400407')) 
AND (Account BETWEEN ('440094') AND ('440100')) 
AND (Account BETWEEN ('450094') AND ('450100'))
GROUP BY Description, Balance 
Run Code Online (Sandbox Code Playgroud)

编辑10.1.2012按照(Richard aka cyberkiwi)的要求

是)我有的

Set 1
|Account        |Description         |Balance
|4004xx         |Red Wine            |$2361.23
|4004xx         |White Wine          |$3620.23
|4004xx         |Rice Wine           |$1223.23

Set 2
|Account        |Description         |Balance
|4400xx         |Red Wine            |$4361.23
|4400xx         |White Wine          |$3260.23
|4400xx         |Rice Wine           |$223.23

Set 3
|Account        |Description         |Balance
|4500xx         |Red Wine            |$1361.23
|4500xx …
Run Code Online (Sandbox Code Playgroud)

sql sum between

6
推荐指数
1
解决办法
3万
查看次数

如何在QTextEdit中突出显示一串文本

我是一名学生程序员,目前正在开发使用Qt4的工作应用程序.我正在构建一个方程编辑器,我在尝试突出显示QTextEdit字段中的字符串时遇到问题.我有一个函数,它解析QTextEdit字符串并返回错误所在的开始和结束整数.我最初的策略是在这两点使用HTML标记来突出显示错误.遗憾的是,html标记和方程式语法似乎存在问题.

我认为我需要的是一种依靠Qt库来设置这两个索引之间背景颜色的策略.我开始寻找QSyntaxHighlighter ; 但是我认为这更像是使用一组预定义的突出显示,而不仅仅是在a&b和设置背景颜色之间抓取任何东西.如果我可以使用语法高亮,请提供我和示例或参考,因为我已经阅读了文档,但没有找到任何内容.

在此先感谢您的帮助!

PS只是为了强调html兼容性问题; 由于使用了多个<和>符号,html变得有问题.

c++ qstring qt stylesheet qtextedit

5
推荐指数
1
解决办法
1万
查看次数

错误:'.'之前的预期primary-expression 代币

我目前正在使用A C++为Dummies All-In-One教授自己的C++; 第二版.要创建这个程序我正在使用Qt.我理解在头文件中组织对象和类是一种很好的做法,并且除了main.cpp之外,还可以构建除.cpp文件中的成员函数.在这方面,我尝试在本书中进行练习,但最近才遇到以下错误.

expected primary-expression before '.' token
Run Code Online (Sandbox Code Playgroud)

第31,32和37行发生此错误,因此它们似乎与我的类成员函数具体相关.

我的main.cpp

#include "controlinginput.h"
#include <QtCore/QCoreApplication>
#include <iostream>
#include <sstream>


using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);


// just a basic name-entering
string name;
cout << "What is your name?";
cin >> name;
cout << "Hello " << name << endl;

/* now you are asked for a number
  but the computer will allow you to enter anything*/
int x;
cout << endl << "Enter a …
Run Code Online (Sandbox Code Playgroud)

c++ qt class object member-functions

4
推荐指数
1
解决办法
2万
查看次数

使用Qstring :: toDouble检查数据

我正在尝试使用该QString::toDouble()功能验证用户输入.该文件说,函数应该这样使用:

double QString::toDouble ( bool * ok = 0 ) const;
/* 
   Returns the string converted to a double value.
   Returns 0.0 if the conversion fails.
   If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
*/
Run Code Online (Sandbox Code Playgroud)

所以我试图使用它*ok来抛出错误消息,如果它的错误,目的是只允许用户输入有效的整数或小数.问题是即使输入单词,消息也始终返回有效.到目前为止,这是我的代码:

void MainWindow::checkData()
{        
    bool validate;
    QString tempStr;
    tempStr = ui->lineEditValidate->text();
    double converted = tempStr.toDouble(&validate);
    if (validate = false)
    {
        QErrorMessage validateError;
        validateError.showMessage("Input is Invalid");
        validateError.exec();
    }
    else
    {
        QErrorMessage worksFine; …
Run Code Online (Sandbox Code Playgroud)

validation double user-interface qstring qt

3
推荐指数
1
解决办法
4106
查看次数

使用If语句处理Bool值

我是一名学生程序员,目前正在使用Qt为我的公司设计GUI,我有一个相当简单的问题,我似乎无法在网上找到答案.似乎有人不得不提前问过它,如果你知道答案在哪里,我很高兴参考.我的问题是; 可以使用if语句处理c ++中的布尔数据类型.因此bool值可以是1或0,所以你可以做这样的事情

bool trueOrFalse()
{
    myclass temp;
    QString tempstr;
    double candidate;
    bool validate;

    tempstr = ui->tableWidgetInjectionLocations->item(i,9)->text();
    candidate = tempstr.toDouble(&validate);
                if(validate == true)
                {
                    temp.tempProperty = candidate;
                }
                else
                {
                    QMessageBox error;
                    error.setText("Error");
                    error.exec();
                }
    if (validate == true)
       {
       return true;
       }
    else
       {
       return false;
       }
}
Run Code Online (Sandbox Code Playgroud)

我真正在寻找的是这个bool函数的最后一部分.当我使用return am时,我实际上返回了一个该函数将持有的值,或者我是否使用了不正确的关键字返回?一旦验证过去Id喜欢能够使用该功能来表明是否继续其他功能请保持我的批评建设性.作为一名学生,我只对改进感兴趣.

c++ qt if-statement boolean return

2
推荐指数
2
解决办法
6万
查看次数

QTreeWidget :: currentItem什么都没有选中时返回什么?

我是一名学生程序员,使用Qt开发GUI应用程序.我正在使用QTreeWidget来显示存储在向量中的一些属性.在同一个窗口中,我有按钮编辑,复制和删除.到目前为止,这些按钮可以满足他们的需求; 但是当我没有选择任何东西时,我遇到了问题.我的程序意外地完成了; 我猜一个段错误.我不认为我正在处理正确选择的currentItem.但是,如果没有选择任何内容,Qt的文档就没有说明返回的内容.所以我希望有更多经验的人帮助/启发我.如果有什么东西你想看看包含的代码的一面只是问.这是我的(相关)代码:

#include "injectiongui.h"
#include "ui_injectiongui.h"
#include "injectiondialog.h"
#include "ui_injectiondialog.h"
#include "injectiondata.h"
#include <QMessageBox>

InjectionGUI::InjectionGUI(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::InjectionGUI)
{
    ui->setupUi(this);
    ui->groupBoxGlobalParticlesPerCell->hide();
    connect(ui->pushButtonEdit, SIGNAL(clicked()), this, SLOT(slotInjectionEdit()));
}

void InjectionGUI::buildTreeWidget() 
{   
   //Build or Refresh Tree Widget with info from the vector
}

void InjectionGUI::editInjection_Clicked(QTreeWidgetItem *itemToEdit) //Creates an Injection Dialog to edit an Item from the Vector
{
    QString converter = itemToEdit->text(0);
    int id = converter.toInt();
    InjectionDialog editInjectionDialog;
    InjectionData presetValues;
    if(itemToEdit == 0) // this was my attempt …
Run Code Online (Sandbox Code Playgroud)

c++ qt user-input qtreewidget qtreewidgetitem

2
推荐指数
1
解决办法
2952
查看次数

QLabel 中的 Theta 和 Alpha 符号

我是一名学生程序员,我正在使用 Qt 创建一个 Gui 来获取用户的输入进行模拟。我正在尝试在 QLabel 中使用 theta 和 alpha 符号。我查看了Qt 的 QLabel 文档,发现 QLabel 确实支持 Unicode。我尝试使用这个 unicode (U+0398) for my theta 和这个 Unicode (U+03B1) for my alpha。问题是我不确定这个 unicode 应该放在 ui 的哪里。Qt 对此没有任何说明。所以它要么被忽视,要么我应该已经知道。我试着把它放在文本字段中。那没有用。

这是我尝试的最新代码:

QString alpha;
QString theta;
alpha.setUnicode(U+03B1);
theta.setUnicode(U+0398);
ui->labelExpansionAngle1->setText(alpha);
ui->labelExpansionAngle2->setText(alpha);
ui->labelOrientationAngle->setText(theta);
Run Code Online (Sandbox Code Playgroud)

然后我尝试:

ui->labelExpansionAngle1->setText("\u03B1");
ui->labelExpansionAngle2->setText("\u03B1");
ui->labelOrientationAngle->setText("\u0398");
Run Code Online (Sandbox Code Playgroud)

我什至尝试使用我在这里发布的网页中的一些其他代码。我希望有人可以阐明如何将这些数据放在一起。在此先感谢您的帮助。

unicode qt symbols input qlabel

1
推荐指数
1
解决办法
7543
查看次数

QMessageBox提示; 按钮布局

我是一名学生程序员,使用Qt为我的公司构建GUI界面.我目前正在构建一个读取数据表的读取器表,并根据文件类型对其进行适当分类.Anywho; 当选择某个文件扩展名时,我有一个消息框显示,用于选择此文件中的数据类型.目前,消息框显示从左到右堆叠的所有按钮,看起来有点愚蠢.我希望他们要么从上到下堆叠更好的堆叠2x2.我一直在查看QMessageBox文档,似乎找不到这样做的方法.我知道一个必须存在似乎我只是需要一些帮助找到它.目前我的这个消息框的鳕鱼看起来像这样;

            QMessageBox templateSelectorWindow;
            QPushButton * pressureBC =templateSelectorWindow.addButton("Pressure Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * flowBC = templateSelectorWindow.addButton("Flow Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * massFlowBC = templateSelectorWindow.addButton("Mass Flow Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * thermalWallBC = templateSelectorWindow.addButton("Thermal Wall Boundry Condition", QMessageBox::AcceptRole);
            QPushButton * cancelButton = overwriteWarning.addButton("Cancel", QMessageBox::RejectRole);
            templateSelectorWindow.setWindowTitle("Input File Type");
            templateSelectorWindow.setText("Input Files Require You Select The Input File Type:");
            templateSelectorWindow.setInformativeText("Please select the the input type from the following");
            templateSelectorWindow.exec();
Run Code Online (Sandbox Code Playgroud)

目前这个窗口看起来像这样: 在此输入图像描述

所以知道你可以看到我为什么要在这里更改布局.感谢您阅读我的帖子!在此先感谢您的帮助,您可以为克服这一挑战做出贡献.

c++ layout user-interface qt qmessagebox

1
推荐指数
2
解决办法
3757
查看次数

在Qt中处理退出而不保存

我是一名学生程序员使用Qt构建和应用工作,我很难找出当用户退出Dialog时如何处理而不保存更改.该对话框主要用于数据输入,因此能够识别是否已经进行了更改,然后在退出之前向用户提供保存选项将非常有用.我在QDialog上查看了Qt的文档,如果按下退出按钮,则没有找到与返回模式有关的任何内容.有一种方法可以确定何时单击退出按钮是首要任务.此外,作为一名学生程序员,我也愿意接受有关如何在数据之前和之后进行比较的最佳实践的任何想法.数据输入表格,所以我猜我必须做这样的事情

connect(some kinda exit handler, SIGNAL(clicked), this, SLOT(comparePreAndPostTable)

QVector<QString> prechanges =  everything from the table
QVector<QString> postchanges = everything from table when exit is clicked


if(prechanges != postchanges)
{
     Give oppertunity to save
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!如果Qt已经拥有了这个东西真的很棒!

c++ user-interface qt exit qdialog

1
推荐指数
1
解决办法
1967
查看次数