小编CTZ*_*tef的帖子

在QSpinBox中设置特定值

我有一个包含a的小部件QSpinBox.这个小部件也有一个QVector<int> Values.我想这样做是让QSpinBox显示发出值Values.

起初我认为我的小部件中的新插槽和信号可以实现这一点,例如

插槽:

void ChangeSomeValue()
{
    // QVector<int> Values;
    // int Index;
    int val = Values[ Index ];
    emit( SomeValueChanged( val ) );
}
Run Code Online (Sandbox Code Playgroud)

连接:

connect( UI->MySpinBox, SIGNAL( valueChanged(int) ), this, SLOT( ChangeSomeValue() ) );
connect( this, SIGNAL( SomeValueChanged(int ) ), UI->MySpinBox, SLOT( setValue(int) ) );
Run Code Online (Sandbox Code Playgroud)

但随后出现了几个问题:

  1. QSpinBoxvalueChanged在我调用它的setValue之后发出另一个,导致无限循环(直到我的QVector爆炸).
  2. 我仍然需要找到一种跟踪索引的方法,具体取决于QSpinBox点击的箭头(向上或向下......我甚至认为这不可能).

所以我的解决方案及其问题似乎是一个死胡同.任何的想法?.QSpinBox如果可能的话,我想坚持下去.

谢谢 !

[编辑]

子类:

class SpinBox : public QSpinBox
{
    Q_OBJECT …
Run Code Online (Sandbox Code Playgroud)

qt qspinbox

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

WPF DataGrid验证/绑定模式错误

我创建了一个非常简单的新项目,仅测试Microsoft WPF DataGrid行为.没有其他涉及,我只使用标准的DataGrid:

解

<Window x:Class="MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">

    <DataGrid ItemsSource="{Binding Employees, Mode=TwoWay}"
              x:Name="tlv"
              AutoGenerateColumns="False"
              SelectionMode="Extended"
              CanUserAddRows="true"
              SelectionUnit="CellOrRowHeader">
        <DataGrid.Columns>
            <DataGridTextColumn Header="First Name" Binding="{Binding FirstName, Mode=TwoWay}"/>
            <DataGridTextColumn Header="Last Name" Binding="{Binding LastName, Mode=TwoWay}"/>
            <DataGridTextColumn Header="Salary" Binding="{Binding Salary, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}"/>
        </DataGrid.Columns>
    </DataGrid>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

Imports System.Collections.ObjectModel
Imports DataGridTest.Data

Class MainWindow
Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    Me.DataContext = Me
    Employees = New ObservableCollection(Of Employee)(EmployeeRepository.GetFlatListData())
    BindableSelectedItems = …
Run Code Online (Sandbox Code Playgroud)

.net vb.net wpf datagrid wpfdatagrid

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

具有验证的WPF文本框会丢失ErrorTemplate

我有一个非常类似于这些的问题:

WPF验证(IDataErrorInfo)和标签页焦点问题

具有验证的文本框在选项卡更改时丢失ErrorTemplate

AdornerDecorator这样的伎俩同一个实例内Window,但是当Window被重载,我切换到TabItem包含TextBox错误时,ErrorTemplate 会显示不出来了

<Window x:Class="Views.MyWindowView">
    <Grid>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <TabControl HorizontalAlignment="Stretch" 
                    Height="Auto"
                    VerticalAlignment="Top"
                    Width="Auto"
                    SelectionChanged="TabItemChanged"
                    Name="MyTabControl">

            <!-- Below, AdornerDecorator are added for the following reason:
                 the Validation.Error cues are painted in the Adorner Layer. 
                 When tabs are switched, that layer is discarded. -->

            <!-- The view 1 tab.-->
            <TabItem Header="{Resx tab1_Header}"
                     Name="Tbi1">
                <AdornerDecorator>
                    <vw:MyView1 DataContext="{Binding}"/>
                </AdornerDecorator>
            </TabItem>

            <!-- The view 2 tab.--> …
Run Code Online (Sandbox Code Playgroud)

validation wpf textbox tabcontrol adornerdecorator

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

更改 QTabWidget 中的小部件

我找不到在运行时替换,QWidget中特定选项卡的方法QTabWidget。我可以使用addTabthen setCurrentWidget,但是如果我只想在选项卡索引 1 处设置 aQWidget而不添加新选项卡怎么办?

qt

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

使用OpenCV打开和读取avi文件 - Ubuntu

我刚刚在R. Laganiere的"OpenCV 2计算机视觉应用程序设计手册"一书中读过这篇文章:

请务必注意,为了打开指定的视频文件,您的计算机必须安装相应的编解码器,否则cv :: VideoCapture将无法理解输入文件.通常情况下,如果您能够在计算机上使用视频播放器打开视频文件(例如Windows Media Player),那么OpenCV也应该能够读取此文件.

不幸的是,事情对我来说并不容易.是的,我可以在我的视频播放器上读取avi文件,但它不适用于我的OpenCV-Qt应用程序.VideoCapture isOpen()方法返回false,尽管路径是正确的,并且所需的每个编解码器似乎都在这里.我尝试了几个文件,因此它与一种特定格式无关.

这里有人有使用OpenCV在Ubuntu中打开avi文件的经验吗?我认为这是一个大问题,在互联网上找不到任何相关的解决方案......

谢谢 !!

[编辑]这是我正在努力的功能; 这里的一些变量是类成员,因此可能看起来不完整.但是,正是这段代码无法正常工作.特别是,我实例化一个新的VideoCapture对象的行.

void MainWindow::on_actionOuvrir_fichier_triggered()
{
    //mettre a -1 streamId
    streamId = -1;
    //get path to the avi file
    QString fileName = QFileDialog::getOpenFileName(this,tr("Ouvrir fichier video"),"/home", tr("Videos (*.avi)"));
    std::string utf8_text = fileName.toUtf8().constData();
    //open .avi
    capture = new VideoCapture(utf8_text);
    //check 
    if(!capture->isOpened())
        cout << "probleme ouverture fichier video" << endl;
    //delay between each frame in ms
    rate = capture->get(CV_CAP_PROP_FPS);
    delay = 1000 / rate;
    //start Qtimer recordId
    recordId = startTimer(delay);
    //capture …
Run Code Online (Sandbox Code Playgroud)

ubuntu opencv avi codec

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

QSettings:.ini文件的行长是否有限制?

我已经对其进行了测试,但尚未达到限制,所以我想知道使用QSettings创建的.ini文件是否具有行长限制?在文档中找不到任何相关信息。

谢谢

[编辑]在Qt论坛上找到的相关信息

c++ qt

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

奇怪的条件陈述(相同的结果)

通过一些代码,我发现了这个:

#ifdef trunc
# undef trunc
#endif
inline float trunc(float x)
{
    return (x < 0.0f) ? float(int(x)) : float(int(x));
}
inline double trunc(double x)
{
    return (x < 0.0f) ? double(int(x)) : double(int(x));
}
inline long double trunc(long double x)
{
    return (x < 0.0f) ? (long double)(int(x)) : (long double)(int(x));
}
#endif // _WIN32
Run Code Online (Sandbox Code Playgroud)

当然,无论条件表达式如何,?:运算符总是在每种情况下返回一个相同的值.另一方面,我猜作者有理由以这种方式编写这些函数; 我找不到一个.任何的想法 ?这只是一个错误(拼写错误)吗?

[编辑]作者的回复:

好点 - 这只是圆形()定义的过度剪切和粘贴.以下应该没问题(除了对int范围的限制):

inline float trunc(float x)
{
    return float(int(x));
}
inline double trunc(double x)
{
    return double(int(x));
}
inline …
Run Code Online (Sandbox Code Playgroud)

c++ conditional-statements

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